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

如何将Pug设为Express模板引擎?两种views路径配置解析

Express视图引擎路径配置差异解析

先看你当前在用的配置:

// configurations for the view engine
app.set('views', './views');
app.set('view engine', 'pug');

这种写法用的是相对路径,它的基准是你启动Node.js进程的当前工作目录,不是代码文件所在的目录。比如你在项目根目录执行node app.js,./views指向的就是根目录下的views文件夹,所以运行正常,但如果换个目录启动(比如从上级目录执行node your-project/app.js),Node会在上级目录找views文件夹,直接报错。

再看教程里的配置:

// configurations for the view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

这里核心是两个关键点:

  • __dirname:Node.js内置变量,代表当前执行这段代码的文件所在的绝对目录路径,不管你从哪启动进程,这个路径都是固定的。
  • path.join():Node.js的path模块方法,专门用来拼接路径,会自动处理不同操作系统的路径分隔符(Windows用\,Linux/macOS用/),避免手动拼接出现的兼容问题。

功能与适用场景

  • 第一种写法:仅适合本地测试,且固定从项目根目录启动的场景,优点是写法简单,但容错性极差,一旦启动路径变化就会崩溃,不适合生产环境。
  • 第二种写法:是Express项目的标准规范写法,不管你在本地调试还是部署到服务器,不管启动路径怎么变,都能精准定位到views文件夹,完全避免路径错误问题,适合所有生产、开发场景,必须优先使用。

内容的提问来源于stack exchange,提问作者Samson Royal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:55:19