如何改变快递的车把延伸?

sup*_*rio 5 node.js express handlebars.js

我是node.js的新手,我想使用把手模板引擎,但缩短了扩展名hbs.

这是原始代码(来源):

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

它适用于带handlebars扩展名的模板,但我将其更改为:

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' });
app.engine('hbs', handlebars.engine);
app.set('view engine', 'hbs');
Run Code Online (Sandbox Code Playgroud)

并将所有模板扩展名更改为hbs.但是,现在我收到此错误:

Error: ENOENT: no such file or directory, open '/path/to/node/myproject/views/layouts/main.handlebars'
   at Error (native)
Run Code Online (Sandbox Code Playgroud)

我也试过了

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' , extname : '.hbs'});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

按照这里的答案,

但我的结果是:

Error: Failed to lookup view "500" in views directory "/path/to/myproject/views"
   at EventEmitter.render (/path/to/myproject/node_modules/express/lib/application.js:579:17)
   at ServerResponse.render (/path/to/myproject/node_modules/express/lib/response.js:961:7)
   at /path/to/myproject/app.js:96:6
   at Layer.handle_error (/path/to/myproject/node_modules/express/lib/router/layer.js:71:5)
   at trim_prefix (/path/to/myproject/node_modules/express/lib/router/index.js:310:13)
   at /path/to/myproject/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/path/to/myproject/node_modules/express/lib/router/index.js:330:12)
   at next (/path/to/myproject/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/path/to/myproject/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/path/to/myproject/node_modules/express/lib/router/index.js:310:13)
Run Code Online (Sandbox Code Playgroud)

我也尝试了其他的东西,但没有一个工作,所以想知道如何解决这个问题?

sup*_*rio 10

这样就可以了:

exphbs = require('express3-handlebars'),
app.engine('hbs', exphbs({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', 'hbs');
Run Code Online (Sandbox Code Playgroud)

  • 该软件包已被弃用,请使用`express-handlebars`。https://www.npmjs.com/package/express3-handlebars (2认同)

Gök*_*can 2

您可以使用express-hbs代替express3-handlebars.

简单地说,您可以这样做:

var hbs = require('express-hbs');
/*
...
*/
app.engine('hbs', hbs.express4({
  partialsDir   : __dirname +'/views/partials',
  defaultLayout : __dirname +'/views/layouts/default',
  extname       : '.hbs',
  layoutsDir    : __dirname +'/views/layouts',
}));

app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
Run Code Online (Sandbox Code Playgroud)