express - 如何通过 express 应用在视图中使用文件夹
问题描述
我的视图文件夹中有一个哈巴狗模板views/administration/assets/fixed-assets.pug
我default.pug
的fixed-assets.pug
扩展来自我的根视图文件夹。
当我尝试渲染fixed-assets.pug
视图时,它会查找目录default.pug
内部views/administration/assets/
而不是视图目录本身
如果我把fixed-assets.pug
它放在视图目录而不是views/administration/assets/
目录中并相应地更新路由,一切都会正常工作。
如何告诉 express 在default.pug
views 目录和目录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/fixed-assets.pug 第 1 行打开“/usr/src/app/views/administration/assets/default.pug”
谢谢你的帮助!
解决方案
在包含的文档中,它说:
如果路径是绝对路径(例如,包括 /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');
推荐阅读
- python-3.x - subprocess.Popen ssh 隧道启动第二个进程,该进程需要使用 pin 回答提示
- javascript - 实现闭包和函数的自调用
- java - 在eclipse java中组织导入
- java - Java 泛型 - 需要在 Object mapper 中泛化 A.class
- angular - 使用 angular 和 flex 动态排列目录卡
- google-cloud-platform - 在 Google Cloud 中,如何为每个函数设置 PubSub 的发布权限?
- javascript - 基于背景的自适应文本颜色
- ios - 尝试为 cloudkit 共享创建缩略图,但
- android - 如何在 ARCore 中调整对象的大小?
- octopus-deploy - Octopus - SQL 部署 DACPAC 社区贡献步骤