5

尝试在 nodejs 中使用把手,我收到此错误“TypeError: Object function app(req, res){ app.handle(req, res); } has no method '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.js 3.0

一些模板引擎不遵循这个约定,创建了 consolidate.js 库来映射所有节点流行的模板引擎以遵循这个约定,从而允许它们在 Express 中无缝工作。

npm 安装合并

尝试以下操作:

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 回答