在Node.js中,res.render在router.get上返回404错误

时间:2017-07-03 23:42:44

标签: javascript node.js express routes ejs

我正在构建我的第一个Node应用程序,但在使用GET请求显示我想要的页面时遇到了一些麻烦。我已经安装了ejs(欢迎提出意见!)所以我的理解是我不需要定义'视图'夹。到目前为止,这是我的路线文件:

const express = require('express');
const router = express.Router();
const Event = require('../models/event')

router.get('/'), function(req, res, next){
   /* Event.find({}).then(function(events){
       res.send(events);
   });
    });*/
    res.render('../../index');
 };

router.post('/events', (req, res) => {
    Event.create(req.body);
    res.send({type: POST})
});


module.exports = router;

数据库连接正常,我可以看到我在get请求中注释掉的代码。但由于某些原因,我无法呈现我的索引文件。我的文件结构如下:

文件树:
File tree

所以我需要上升两个级别,对吗?我试过index,index.ejs,.. / index,views / index,什么都没有用。我做错了什么?

编辑:这是我的server.js:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const routes = require('./routes/index');
var path = require("path");

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

app.use(bodyParser.json());
app.use(express.static('public'));
app.use(routes);
app.use(bodyParser.urlencoded({extended: true}))

mongoose.connect('mongodb://junk:junk@ds141242.mlab.com:41242/alaska-events');


app.listen(3000, () => {
    console.log('listening on 3000')
  });

2 个答案:

答案 0 :(得分:1)

views文件夹直接放在根文件夹中,并使用我们的app.set('views',path.join(__ dirname,'views'));将它指向views文件夹。所以在渲染中直接提到视图名称。

router.get('/', function(req, res, next){
   res.render('index');
});

答案 1 :(得分:0)

感谢大家的帮助,结果只是一个错字。 router.get('/'), function(req, res, next)应该是router.get('/', function(req, res, next)