Папка ExpressJS Views не рендерится - PullRequest
0 голосов
/ 02 января 2019

При использовании шаблонов Express и pug ни один из файлов в папке представлений не отображается должным образом. Папка views указывается в app.js как каталог 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 в качестве движка и папку представлений в качестве расположения файлов представлений:

...

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

...

1 Ответ

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

Для всех остальных, просматривая это, я нашел что-то, что, кажется, работает в этом SO-ответе: Экспресс игнорирование каталога просмотров

добавление layout: false к маршруту контроллера, отображение файловв папке просмотров правильно.

в файле контроллера выше, я изменил

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

и представления отображаются правильно.

...