Не удалось просмотреть представление с использованием ejs и expressjs - PullRequest
0 голосов
/ 26 февраля 2019

Я только начинаю изучать NodeJS и мне кажется удивительным.В любом случае, я сталкиваюсь со странной проблемой рендеринга вида.По сути, я хочу использовать шаблон MVC, поэтому я организовал свой проект следующим образом:

enter image description here

Внутри app.js Я написал следующий код:

const express = require('express');
const app = express();

require('./config/environment.js')(app, express);
require('./config/routes.js')(app);

app.listen(process.env.PORT || 3000);

По сути, я объявил сервер, используя expressjs 'причина указана для MVC приложения, а затем я поместил всю конфигурацию для среды в envinroment.js, передавая конструкторумодуль приложение и экспресс:

module.exports = function(app, express){

    app.set('development', function(){
        app.use(express.errorHandler({
            dumpExceptions: true,
            showStack: true
        }));
    });

    app.set('production', function(){
        app.use(express.errorHandler());
    });

    app.set('view engine', 'ejs');
    app.set('views', __dirname);

    if(process.env.NODE_ENV === 'production'){
        app.set('port', 80);
    }
};

, как вы можете видеть, я установил как view engine пакет ejs, поэтому таким образом я могу рендерить html-файл в файле javascript и передавать информацию впредставление.

Затем в routes.js я написал:

module.exports = function(app){

    app.get('/', function(req, res){
        res.render('home.ejs', {counter: 2});
    });

};

Это код, который вызывает проблему, например, при загрузке приложения я получаю:

Не удалось найти представление "home.ejs"

Я также пытался использовать:

const path = require('path');
res.render(path.join(__dirname+'/views/home.ejs'), {counter: 2});

, но та же проблема ..

Заранее спасибо залюбая помощь

1 Ответ

0 голосов
/ 26 февраля 2019

Добавьте

let path = require('path');

в начало вашего скрипта.

Затем в вашем app.js напишите:

app.set("views", path.join(__dirname, "..", "views"));

вместо просто "app.set('views', __dirname); ".

А в вашем routes.js пишите:

 res.render('home', {
     counter: 2
 });
...