使用Express和pug模板,不能正确呈现views文件夹中的所有文件。在app.js中,views文件夹被指定为view目录,而pug被列为模板引擎。
我找不到丢失的东西。
这是文件:
index.pug:
extends layout
block content
h1= title
p Welcome to #[em LocalLibrary], a very basic Express website developed as a tutorial example on the Mozilla Developer Network.
h1 Dynamic content
if error
p Error getting dynamic content.
else
p The library has the following record counts:
ul
li #[strong Books:] !{data.book_count}
li #[strong Copies:] !{data.book_instance_count}
li #[strong Copies available:] !{data.book_instance_available_count}
li #[strong Authors:] !{data.author_count}
li #[strong Genres:] !{data.genre_count}
控制器:
var Book = require('../models/book');
var Author = require('../models/author');
var Genre = require('../models/genre');
var BookInstance = require('../models/bookinstance');
var async = require('async');
exports.index = function(req, res) {
async.parallel({
book_count: function(callback) {
Book.countDocuments({}, callback); // Pass an empty object as match condition to find all documents of this collection
},
book_instance_count: function(callback) {
BookInstance.countDocuments({}, callback);
},
book_instance_available_count: function(callback) {
BookInstance.countDocuments({status:'Available'}, callback);
},
author_count: function(callback) {
Author.countDocuments({}, callback);
},
genre_count: function(callback) {
Genre.countDocuments({}, callback);
}
}, function(err, results) {
res.render('index', { title: 'Local Library Home', error: err, data: results });
});
};
app.js包括以下设置pug作为引擎,并将views文件夹作为视图文件的位置:
...
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
...
答案 0 :(得分:0)
对于其他任何人,查看此内容,我发现在此SO答案中似乎起作用:Express ignoring views directory
将layout: false
添加到控制器路由,可以正确显示views文件夹中的文件。
在上面的控制器文件中,我更改了
res.render('index', { title: 'Local Library Home', error: err, data: results });
到
res.render('index', { layout: false, title: 'Local Library Home', error: err, data: results });
希望我不必为每个控制器操作分别执行此操作,但很高兴看到它能正常工作...
随后,更正了app.js中的路径,而不是修复了每个单独的控制器:
更改了此内容
app.set('views', path.join(__dirname, 'views'));
对此:
app.set('views', path.join(__dirname, '/views'));
并且视图正确呈现。