无法使用ejs和expressjs查找视图

时间:2019-02-26 09:22:38

标签: node.js express ejs

我刚刚开始学习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包,因此可以通过这种方式在javascript文件中呈现html文件并将信息传递给视图。

然后我在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 :(得分:1)

添加

let path = require('path');

到脚本的开头。

然后,在您的app.js中输入:

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

而不只是“ app.set('views', __dirname);”。

然后在您的routes.js中输入:

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