проблема при рендеринге представлений с использованием express.js - PullRequest
0 голосов
/ 01 сентября 2018

Хотя мой путь рендеринга правильный, когда я нажимаю http://localhost:4444/admin/posts/create, он показывает какую-то ошибку, такую ​​как

Error: Failed to lookup view "/admin/posts/create" in views directory "D:\node practise\CMS\views"

app.js файл похож на

const express = require('express');
const app = express();
const path = require('path');
const exphbs = require('express-handlebars');
const mongoose = require('mongoose');


mongoose.connect('mongodb://localhost:27017/cms', { useNewUrlParser: true })
    .then(db => {
        console.log('MONGO CONNECTED!');
    })
    .catch(error => {
        console.log('MONGO NOT CONNECTED!');
    })



//making app to use static file
app.use(express.static(path.join(__dirname, 'public')));

//define template engine
app.set('view engine', 'handlebars');

//set default engine
app.engine('handlebars', exphbs({defaultLayout: 'home'}));

//load routes
const home = require("./routes/home/index");
const admin = require("./routes/admin/index");
const posts = require("./routes/admin/posts");

//use routes
app.use(home);
app.use("/admin", admin);
app.use("/admin/posts", posts);


//setting up server
app.listen(4444, () => {
    console.log('Listening....');
});

У меня есть posts.js, который обрабатывает этот маршрут как

const express = require("express");
const router = express.Router();


router.all('/*', (req, res, next) => {
    req.app.locals.layout = 'admin';
    next();
})

router.get('/', (req, res) => {
    res.send('It works!');
})

router.get('/create', (req, res) => {
    res.render('/admin/posts/create');
})

module.exports = router;

И у меня есть структура папок представлений как enter image description here

В чем может быть причина ошибки? Когда я пытаюсь отправить ответ, он работает, но когда я пытаюсь отобразить представление, он показывает ошибку.

1 Ответ

0 голосов
/ 01 сентября 2018

Можете ли вы попробовать res.render('admin/posts/create');?

Если папки просмотра установлены правильно следующим образом: app.set('views', './views'), вы сможете разрешить простое имя представления, например res.render('myview') в ./views папке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...