我刚刚开始学习NodeJS
,对我来说似乎很神奇。无论如何,我面临着有关视图渲染的怪异问题。本质上,我想使用MVC
模式,因此我通过以下方式组织了项目:
在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});
但同样的问题..
在此先感谢您的帮助
答案 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
});