EJS:app.set('views',viewsPath)没有效果

问题描述 投票:0回答:1

依赖关系:

"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') ,它正确返回了提供的路径,只是为了确保这不是一个明确的问题。

node.js express ejs
1个回答
0
投票

在设置ejs之前尝试设置路径

app.set('views', path.join(__dirname, 'website/src/views'))
app.set('view engine', 'ejs')
© www.soinside.com 2019 - 2024. All rights reserved.