nodejs handlebars错误TypeError:this.set不是函数

时间:2016-08-01 11:37:58

标签: javascript node.js handlebars.js

嘿,聪明的人想要帮助我!

我是一个nodejs初学者,我想用把手作为我的模板引擎...... 这是我的第一个nodejs应用程序,我按照本指南操作: https://www.youtube.com/watch?v=m5ribwPpIPw

我使用cloud9作为我的想法..

我只有一个js文件,其真正的一切:

var express = require('express');
var app = express();
var hbs = require('express3-handlebars');

app.engine = ('handlebars', hbs({defaultLayout: 'layout'}));
app.set = ('view engine', 'handlebars');

app.get('/', function (req,res){
  res.render('index');
});

app.use('/views',express.static('views'));

app.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0");

我正在做导游引用我做的所有事情...... this is my folder tree:

更新:这是我得到的错误..忘了把它放在这里:

/home/ubuntu/workspace/node_modules/express/lib/application.js:421   return Boolean(this.set(setting));                       ^

TypeError:this.set不是函数     在EventEmitter.enabled(/home/ubuntu/workspace/node_modules/express/lib/application.js:421:23)     在EventEmitter.lazyrouter(/home/ubuntu/workspace/node_modules/express/lib/application.js:139:27)     在EventEmitter.methods.forEach.app。(匿名函数)[as get](/home/ubuntu/workspace/node_modules/express/lib/application.js:478:10)     在对象。 (/home/ubuntu/workspace/server.js:8:5)     在Module._compile(module.js:409:26)     at Object.Module._extensions..js(module.js:416:10)     在Module.load(module.js:343:32)     在Function.Module._load(module.js:300:12)     在Module.runMain [as _onTimeout](module.js:441:10)     在Timer.listOnTimeout(timers.js:92:15)

2 个答案:

答案 0 :(得分:2)

修正这些行:

app.engine('handlebars', hbs({defaultLayout: 'layout'}));
app.set('view engine', 'handlebars');

另一方面,将layout.hbs更改为layout.handlerbars

答案 1 :(得分:0)

FYI - ' express3-handlebars'已被改为只是'快递把手'。您可能想要更新它。请参阅here

此外,如果您想使用.hbs扩展名命名布局,则可以。

app.engine = ('handlebars', hbs({ defaultLayout: 'layout' , extname: '.hbs'}));
app.set = ('view engine', 'handlebars');