如何在Express App的视图中使用文件夹

时间:2019-01-26 20:21:23

标签: express pug

我的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行

感谢您的帮助!

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');