NodeJS 未在视图目录中呈现Handlebars模板

mrphzbgm  于 2023-05-22  发布在  Node.js
关注(0)|答案(2)|浏览(110)

这是我的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");
});
chy5wohz

chy5wohz1#

您需要一个express-handlebars的layouts文件夹来查找index. hbs。默认情况下,handlebars首先查找main.hbs,然后查找main. hbs中要呈现的index.hbs。

只是为了在app.engine中澄清,我的extname被设置为“html”。希望这能帮上忙。你可以在express-handlebars上阅读它

9vw9lbht

9vw9lbht2#

如果你没有一个'layouts'目录,你可以覆盖默认的main.hbs路径,直接指向'views',就像这样

app.engine('handlebars', expressHbs.engine({layoutsDir:'./views'})
app.set('views', 'views')

注意layoutsDir中的路径将相对于您的'views'路径。另外,https://www.npmjs.com/package/express-handlebars用于新的express-handlebars可能会有所帮助

相关问题