【发布时间】:2022-01-28 18:57:16
【问题描述】:
对不起,这是基本问题,但我不能自己解决这个问题。
我尝试制作快速服务器,在访问http://localhost:3000 时响应index.ejs 文件。我想做的很简单。我的服务器代码如下。
server.mjs
import express from 'express';
import path from 'path';
const app = express();
console.log(process.cwd());
console.log(path.join(path.resolve(), 'views'));
app.set('views', path.join(path.resolve(), '/views'));
app.set('view engine', 'ejs');
app.get('/', (res, req) => {
res.render('index');
});
app.listen(3000, () => {
console.log(`Example app listening on port 3000`);
});
以上server.mjs返回Cannot GET /index.ejs页面,浏览器控制台显示GET http://localhost:3000/index.ejs 404 (Not Found)消息。
项目目录树如下。
.
├── node_modules
├── package-lock.json
├── package.json
├── server.mjs
└── views
└── index.ejs
上面代码中process.cwd和path.join的结果如下。
//the result of process.cwd()
/Users/****/Documents/IntelliJ project/****
//the result of path.join()
/Users/****/Documents/IntelliJ project/****/views
index.ejs的路径配置错了吗?为什么服务器没有得到index.ejs?
我的项目环境在这里。
操作系统:MacOS v11.6
IDE:IntelliJ IDEA 2021.2
node.js:v14.17.0
express.js:v4.17.2
ejs:v3.1.6
【问题讨论】:
-
path.join(path.resolve(), 'views'));应该是path.join(__dirname, 'views'));, RTM -
注释掉
app.set('views', path.join(path.resolve(), '/views'));,然后重试。由于您的视图位于“视图引擎”的默认位置,因此无需再次设置。 -
它工作正常!交换参数(req, res)是很容易犯的错误,但我没有意识到。谢谢!