使用EJS res.render的Node js路由不起作用,但是res.send确实可以



我正在设置节点JS应用程序的环境。但是视图/EJS文件没有被渲染。如果我这样做:

app.get("/", function(req, res){
res.send('Something');
});

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

app.get("/", function(req, res){
res.render(index);
});

它不起作用,我在网络中的cleint一侧得到了"索引",但在命令行中没有错误。

这是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参数有问题,或者发生了变化吗?我正在关注一个可能已经过时的教程,但是检查文档,我看不到问题。

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

谢谢

好吧,我不是Express的专业人士,但是在这里索引没有定义,因为您像变量一样写入它。尝试使用类似的东西

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

最新更新