这是我第一次使用Node而我正在使用express框架。我想在“日历”页面(在main.js中看到)输出一个json对象。当我运行路由器(main.js)时,我收到此错误:错误:ENOENT,没有这样的文件或目录'/ Users / Macbook / Desktop / node / views /('calendar.ejs')'
基本上我想将main.js中定义的JSON对象输出到我的html文件中。有人可以向我解释为什么服务器找不到日历文件。它可以找到index.ejs而不是日历。这是我想要实现的正确方法吗?
以下是我设置的目录结构:
-------node_modules
-------routes
-------------main.js
-------views
------------calendar.ejs
------------index.ejs
-------package.json
-------server.js
这是我的server.js代码:
var express=require('express');
var app=express();
require('./routes/main')(app);
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
var server=app.listen(3000,function(){
console.log("We have started our server on port 3000");
});
这是我的main.js代码:
module.exports=function(app){
app.get('/', function(req,res){
res.render('index',{title:"Home page"});
});
app.get('/calendar',function(req,res){
res.json({"foo": "bar"});
});
}
答案 0 :(得分:0)
只是一个猜测。
首先,您使用GET /calendar
设置require('./routes/main')(app);
路线。
然后,您使用GET /calendar
覆盖app.set('views',__dirname + '/views');
路线。
您需要选择GET /calendar
是否返回呈现的HTML或JSON数据。
答案 1 :(得分:0)
很少有事情需要注意:
由于您的观看文件属于.ejs
个附加信息,因此您可以在下方发表评论。(documentation)
app.engine('html', require('ejs').renderFile);
在设置完所有配置后,将“app”引用传递给路由器是惯例,middleware在使用ExpressJS时命令很重要。
var express=require('express');
var app=express();
app.set('views', path.join(__dirname, '/views'));
app.set('view engine', 'ejs');
require('./routes/main')(app);
var server=app.listen(3000,function(){
console.log("We have started our server on port 3000");
});
module.exports=function(app){
app.get('/', function(req,res){
res.render('index',{title:"Home page"});
});
app.get('/calendar',function(req,res){
res.render('calendar',{"foo": "bar"});
});
}