Как использовать папки в представлениях с экспресс-приложением - PullRequest
0 голосов
/ 26 января 2019

У меня есть шаблон мопса в папке моих представлений в views/administration/assets/fixed-assets.pug

Мой default.pug, из которого распространяется fixed-assets.pug, находится в моей папке корневых представлений.

Когда я пытаюсьрендерим fixed-assets.pug представление, которое ищет default.pug внутри каталога views/administration/assets/, а не сам каталог views

Все работает нормально, если я возьму fixed-assets.pug и поместу его в каталог views вместокаталог 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/default.pug' в /usr/src/app/views/administration/assets/fixed-assets.pug строка 1

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 января 2019

В документах для Включает написано:

Если путь абсолютный (например, include /root.pug), он разрешается путем добавления опции options.basedir.В противном случае пути разрешаются относительно текущего компилируемого файла.

Объяснение этому приведено в Справочнике по API :

basedir: stringКорневой каталог всех абсолютных включений.

Глобально вы можете реализовать basedir следующим образом в основном файле app.js / server.js:

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.locals.basedir = path.join(__dirname, 'views');
...