这是我的index.js
代码,应该在views
目录中渲染index.hbs
,但给出错误Error: ENOENT no such file or directory, open '__dirname\views\layouts\main.hbs'
,我甚至没有布局文件夹。index.js
const express = require('express');
const expressHbs = require('express-handlebars');
const bodyParser = require('body-parser');
const path = require('path')
const app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.set('view engine', 'hbs');
app.engine('hbs', expressHbs({extname: 'hbs'}));
app.set('views', 'views');
app.get('/', (req,res)=> {
res.render('index');
});
app.listen(3000, ()=> {
console.log("SERVER HAS STARTED ON PORT 3000");
});
2条答案
按热度按时间chy5wohz1#
您需要一个express-handlebars的layouts文件夹来查找index. hbs。默认情况下,handlebars首先查找main.hbs,然后查找main. hbs中要呈现的index.hbs。
只是为了在app.engine中澄清,我的extname被设置为“html”。希望这能帮上忙。你可以在express-handlebars上阅读它
9vw9lbht2#
如果你没有一个'layouts'目录,你可以覆盖默认的main.hbs路径,直接指向'views',就像这样
注意layoutsDir中的路径将相对于您的'views'路径。另外,https://www.npmjs.com/package/express-handlebars用于新的express-handlebars可能会有所帮助