我的views/administration/assets/fixed-assets.pug
下的views文件夹中有一个哈巴狗模板
default.pug
的扩展名fixed-assets.pug
在我的根目录文件夹中。
当我尝试渲染fixed-assets.pug
视图时,它会在default.pug
目录中查找views/administration/assets/
,而不是views目录本身
如果我将fixed-assets.pug
放置在views目录中而不是views/administration/assets/
目录中,并进行相应的更新,一切都会很好。
如何告诉Express在views目录中查找default.pug
,在fixed-assets.pug
目录中查找views/administration/assets/
?
这是我的路线
var express = require('express');
var secured = require('../lib/middleware/secured');
var router = express.Router();
/* GET fixed-assets page. */
router.get('/administration/fixed-assets', secured(), function(req, res, next) {
res.render('administration/assets/fixed-assets', {
title: 'Fixed Assets'
});
});
module.exports = router;
这是我的views/administration/assets/fixed-assets.pug
extends default.pug
block scripts
if !starter
script(src='/js/main.js')
block view
.animated.fadeIn
h1 Fixed Assets
这是我得到的错误
ENOENT:没有这样的文件或目录,请打开 '/usr/src/app/views/administration/assets/default.pug'位于 /usr/src/app/views/administration/assets/fixed-assets.pug第1行
感谢您的帮助!
答案 0 :(得分:0)
在Includes的文档中说:
如果路径是绝对路径(例如,包含/root.pug),则通过以下方式解析 前置options.basedir。否则,相对于 当前正在编译的文件。
对此的解释在API Reference中:
basedir:string所有绝对包含的根目录。
您可以在主app.js / server.js文件中像这样全局地实现basedir:
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.locals.basedir = path.join(__dirname, 'views');