依赖关系:
"ejs": "^3.1.9",
"express": "^4.18.2",
我的文件夹结构如下:
/usr/src/app/
|
|- app.js
|- website/src/views
|- myView.ejs
在 app.js 中,我像这样设置 EJS:
const app = express()
app.set('view engine', 'ejs')
app.set('views', path.join(__dirname, 'website/src/views'))
我像这样路由请求:
router.get('/myView', (req, res) => {
res.render('myView')
})
在运行时,我传递给 app.set 的路径正确解析为 /usr/src/app/website/src/views。
当请求通过时,会引发以下异常:
server-1 | Error: Failed to lookup view "myView" in views directory "/usr/src/app/views"
server-1 | at Function.render (/usr/src/app/node_modules/express/lib/application.js:597:17)
server-1 | at ServerResponse.render (/usr/src/app/node_modules/express/lib/response.js:1039:7)
server-1 | at file:///usr/src/app/website/routers/root.js:3:13
server-1 | at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
server-1 | at next (/usr/src/app/node_modules/express/lib/router/route.js:144:13)
server-1 | at Route.dispatch (/usr/src/app/node_modules/express/lib/router/route.js:114:3)
server-1 | at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
server-1 | at /usr/src/app/node_modules/express/lib/router/index.js:284:15
server-1 | at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:346:12)
server-1 | at next (/usr/src/app/node_modules/express/lib/router/index.js:280:10)
看起来 EJS 完全忽略了我的 app.set 指令并默认为 /usr/src/app/views。 我是不是错过了什么?
我已经尝试将 app.set('view engine') 与 app.set('views') 交换,但问题仍然存在。 我还尝试记录 app.get('views') ,它正确返回了提供的路径,只是为了确保这不是一个明确的问题。
在设置ejs之前尝试设置路径
app.set('views', path.join(__dirname, 'website/src/views'))
app.set('view engine', 'ejs')