尝试使用带有nodejs的把手,我得到了这个错误" TypeError:对象函数app(req,res){app.handle(req,res);没有方法'注册'"。下面是nodejs的代码。相同的代码似乎适用于其他人,因为它几乎是NodeJS + Express + Handlebars - failed to locate view "index.html"的复制粘贴。附:我是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");
答案 0 :(得分:5)
Express 3.0将app.register更改为app.engine。 Migrating to Express.js 3.0
某些模板引擎不遵循此约定,创建了consolidate.js库以映射所有节点的流行模板引擎以遵循此约定,从而允许它们在Express中无缝地工作。
npm install巩固
尝试以下方法:
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);
});