无法使用Express Handlebars在目录中查找视图

bcm*_*cfc 8 node.js express handlebars.js

我正在遵循您从Express Generator获得的基本应用程序布局,并尝试为Handlebars配置它.

片段:

var exphbs = require('express-handlebars');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views/'));

app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

一切顺利,直到我尝试将Handlebars的扩展名更改.hbs为如下:

app.engine('handlebars', exphbs({defaultLayout: 'main', extname: '.hbs'}));
Run Code Online (Sandbox Code Playgroud)

(并重命名文件).

这导致:

错误:无法在视图目录中查找视图"错误"

我查看了function ExpressHandlebars(config)express-handlebars.js源代码,它确实尝试适当地设置extname.

我究竟做错了什么?

bcm*_*cfc 18

有点违反直觉,设置扩展名是不够的.

所需的设置是:

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

  • 对于其他一开始没有看到它的人:引擎名称必须与文件扩展名相同.有谁知道为什么? (3认同)
  • 发现这个:https://github.com/strongloop/express/blob/e5ec966b2f068e935ea1b33374fac133dd06cdc8/lib/application.js#L262 (2认同)