Node.js / Express应用程序未返回正确的EJS页面

时间:2018-01-03 04:29:00

标签: node.js express ejs

我正在使用Node.js,Express和EJS构建一个网站。现在我有两个EJS模板,每个模板对应一个网站页面: 主页网址应为//home。 “职员”网址应为/staff。家庭工作正常,但出于某种原因,即使我访问/staff甚至是无意义的地址(例如,/eduwshduhwudhwud),我仍然可以获得主页。这是我的代码,它位于app.js内部,用于构建路径。

这是我的文件夹结构和代码: directory structure

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


app.use(express.static("public")); // To allow static files
app.set("view engine", "ejs"); 

// -------------------------------- HOME PAGE-----------------------------------

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

app.get("/home", function(req, res){
    res.render("home");
})
// -------------------------------- STAFF PAGE-----------------------------------

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

// -------------------------------- HOME PAGE-----------------------------------

// -------------------------------- HOME PAGE-----------------------------------

// -------------------------------- HOME PAGE-----------------------------------

app.listen(process.env.PORT, process.env.IP, function(){
    console.log("SERVER IS RUNNING!");
})

1 个答案:

答案 0 :(得分:0)

使用path.join(__dirname, 'views')将应用程序的目录(即_dirname)组合到您的views目录。

这就是我在申请中的表现:

var express = require('express');
var path = require('path');
...
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views')); // <-- add this line before your view engine definition
app.set('view engine', 'ejs');
...

鉴于此,在我的路线中,我可以使用res.render()引用views文件夹中的任何视图。例如:

res.render('dashboard', { title: 'My App', greeting: 'Hello' });