我将nodejs模板引擎切换到ejs(来自jade)。当我使用我的ejs模板运行我的app.js时,我收到一系列"无法查找视图'错误'在观点"日志。
其中一些包括:
GET /css/bootstrap.min.css 500 12.588 ms - 1390
Error: Failed to lookup view "error" in views directory
...
GET /css/clean-blog.min.css
Error: Failed to lookup view "error" in views directory
...
GET /js/bootstrap.min.js
Error: Failed to lookup view "error" in views directory
...
GET /js/jquery.js
Error: Failed to lookup view "error" in views directory
事实上,许多这些依赖项都包含在模板本身中(通过脚本标记包含在内)。什么是让它们在快递中工作的适当位置?似乎表达最终不应该在views
文件夹中查找这些内容(因为它们不是视图)。
答案 0 :(得分:7)
确保您的Express App具有此设置,对于您听起来像当前的布局。
// Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));
// Set 'views' directory for any views
// being rendered res.render()
app.set('views', path.join(__dirname, 'views'));
// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
将res.render()
呈现的视图置于'视图'中是非常正常的。应用程序顶层的目录。 express-generator
实际上使用了该视图设置。您可以通过修改以下行来改变它
// replace with the directory path below ./
app.set('views', path.join(__dirname, 'views'));
答案 1 :(得分:1)
Express似乎找不到您的文件,因此您的可怜的小服务器想要返回错误,但views
目录中缺少您的错误文件。
在views目录中,您只需创建一个名为error.jade的文件。
然后你必须搜索Express搜索文件的位置。
答案 2 :(得分:0)
我通过使用以下代码解决了我的问题。
// Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));
// Set view engine as EJS
app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');
// Set 'views' directory for any views
// being rendered res.render()
app.set('views', path.join(__dirname, ''));
app.use('/form', express.static(__dirname + '/index.html'));
答案 3 :(得分:0)
它对我有效:
我需要从./views/payment.pug中删除./views /
res.render('payment.pug', { title: 'Hey', message: 'Hello there!'});
这是不正确的:
res.render('./views/payment.pug', { title: 'Hey', message: 'Hello there!'});
^^^^^^
应该删除^^^^^^^^^^,就像第一个样本一样
答案 4 :(得分:0)
我通过添加以下内容修复了我的问题:
app.set('views','./src/views');
答案 5 :(得分:0)
检查文件扩展名 就我而言,我使用 .js 而不是 .ejs
答案 6 :(得分:-2)
我的文件扩展名为 .js,我在视图目录中将其重命名为 .ejs,我在 ./src/pages 中设置了它