You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

渲染EJS模板是否无需再配置app.set('views', path.join(__dirname, 'views'))?

结论

app.set('views', path.join(__dirname, 'views')) 不是必须配置项,你之前的使用方式也没有错误。

底层规则

Express 4.x 及以上的所有稳定版本,views 配置项的默认值为 当前启动 Node 进程的工作目录下的 views 文件夹。只要你的模板文件确实存放在这个默认路径下,仅配置 view engine 就可以正常调用 res.render 渲染模板,不需要额外指定路径。

为什么之前的项目都要加这个配置?

手动配置 views 路径是更稳妥的工程化实践,能规避很多异常场景,常见需要显式配置的场景包括:

  • 模板文件夹的名称不是默认的 views,比如你自定义命名为 template、tpl 等
  • 模板文件夹没有存放在项目根目录,比如存放在 src/views 这类子路径下
  • 你需要保证应用的稳定性不受启动路径影响:如果没有显式配置,当你从非项目根目录启动 Node 进程时,Express 会去启动路径下找 views 文件夹,就会出现模板找不到的报错。用 path.join(__dirname, 'views') 会强制匹配入口文件所在目录下的 views 文件夹,无论你从哪个路径启动服务都不会出错。

你的测试场景刚好符合默认路径规则:直接在项目根目录启动服务,根目录下有存放 index.ejs 的 views 文件夹,所以即使不配置也能正常运行。

内容的提问来源于stack exchange,提问作者Daniel Torres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:36:04