这是我使用把手设置视图和目录的nodejs express
:
- server.js
- routes
|-- index.js
-config
|-- config.js
- client
|-- public
| | -- js
| | -- css
| | -- font
|-- views
|-- index.html
|-- layout
|-- layout.handlebars
| ... other directories
这是我的node.js代码:
// Set static folder
app.use(express.static(path.join(__dirname, '/client/public')));
// Views and view engine
app.set('views', path.join(__dirname, '/client/views'));
app.set('view engine', 'ejs');
app.engine('html', handlebars({ defaultLayout: 'layout' }));
把手无法找到我的布局。它正在查看app/views/layouts/layout.handlebars
,但应该查看app/client/views/layouts/layout.handlebars
我在这里缺少什么?
答案 0 :(得分:5)
好像你正在使用express-handlebars
您需要在创建目录时指向目录。
const hbs = exphbs.create({
extname :'hbs',
layoutsDir : 'path/to/layout/directory',
defaultLayout: 'main',
helpers : 'path/to/helpers/directory',
partialsDir : [
'path/to/partials/directory'
]
});
如果您没有使用自定义文件夹位置启动它,它会在默认位置查找文件。
此外,视图引擎需要设置为hbs.engine
而不是ejs
app.engine('hbs', hbs.engine);
app.set('view engine', 'hbs');