使用ejs res.render进行节点js路由不起作用,但res.send执行

时间:2017-11-26 16:33:39

标签: javascript node.js express ejs

我正在为节点js app设置环境。 但是没有呈现views / ejs文件。如果我这样做:

app.get("/", function(req, res){

res.send('Something');
});

这很有效。但是,如果我这样做(有一个索引,ejs文件):

app.get("/", function(req, res){

res.render(index);
});

它不起作用,我在网页的cleint端获得“index not a defined”,但在命令行中没有错误。

这是app.js:

var express = require("express");
var path = require("path");

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

app.use(express.static(path.join(__dirname, 'public')));



app.get("/", function(req, res){

 res.send('Something');
});

app.get("/", function(req, res){

res.render(index);
});


const port = process.env.PORT || 3000
app.listen(port, function () {
console.log(`Express is running on port ${port}`)
})

app.set参数有问题,还是有变化?我正在按照可能过时的教程,但检查文档,我没有看到问题。

那么,这里有什么问题,是否有一种新方法可以使用ejs进行路由?我知道局部已经消失了。这是否意味着根本没有ejs文件,如果是这样,它现在应该如何完成?通过渲染html文件?

由于

1 个答案:

答案 0 :(得分:1)

嗯,我不是快递专家,但是这里没有定义索引,因为你把它写成变量。尝试使用类似的东西

res.render(path.resolve(__dirname + "/views/index"));