5

nodejsでハンドルバーを使用しようとすると、このエラーが発生します "TypeError:Object function app(req、res){app.handle(req、res);} has nomethod'register'"。以下はnodejsのコードです。NodeJS + Express + Handlebarsのコピーペーストであるため、同じコードが他の人にも機能しているようです-ビュー「index.html」を見つけることができませんでした。PS私はnodejsを初めて使用し、その感触をつかもうとしていて、すでにハンドルバーに慣れています。

//Load Modules
var express = require('express');
var handlebars = require('handlebars');

var app = express();

// Configuration
app.configure( function() {
    app.register('.html', handlebars);
    app.set('views', __dirname + '/');
    app.set('view engine', 'handlebars');
    app.set("view options", { layout: false });    
});

// Routes
app.get('/:first/:last', function(req, res) {
    var data = {title:req.param.first + " " + req.param.last};
    res.render("template/profilecard.html", data);
});

app.listen(3000);

console.log("NodeJS Server Started");
4

1 に答える 1

5

Express 3.0は、app.registerをapp.engineに変更しました。 Express.js3.0への移行

一部のテンプレートエンジンはこの規則に準拠していません。consolidate.jsライブラリは、ノードで人気のあるすべてのテンプレートエンジンをこの規則に準拠するようにマップするために作成されたため、Express内で見た目には機能しません。

npm install consolidate

次のことを試してください。

var engines = require('consolidate');

app.configure( function() {

    app.set('views', __dirname + '/');
    app.set('view engine', 'handlebars');
    app.set("view options", { layout: false }); 
    app.engine('.html', engines.handlebars);
});
于 2013-01-15T20:16:48.390 に答える