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

从其他目录启动Node.js/Express MVC应用时的视图文件找不到问题

问题原因与解决方案

这个问题的核心是视图目录用了相对路径,PM2从其他目录启动时,工作目录是你执行命令的目录,而非应用所在目录,导致Express错误地在当前命令目录下查找views文件夹。以下是具体解决方法:

1. 改用绝对路径设置视图目录

Node.js中的__dirname代表当前模块文件所在目录的绝对路径,结合path模块拼接,能确保无论从哪里启动,都指向应用自身的views文件夹:

const path = require('path');
// 设置视图目录为应用根目录下的views文件夹
app.set('views', path.join(__dirname, 'views'));

// 如果views在子目录(比如src/views),就改成:
// app.set('views', path.join(__dirname, 'src', 'views'));

同理,如果你的静态文件(public目录)也用了相对路径,同样要改成绝对路径避免同类问题:

app.use(express.static(path.join(__dirname, 'public')));

2. PM2启动时指定工作目录

如果不想修改代码,可以在PM2启动命令中用--cwd参数指定应用的工作目录,强制PM2以应用所在目录为基准执行:

pm2 start ../another_directory/my_app.js --cwd ../another_directory

更推荐用PM2配置文件(ecosystem.config.js)管理,避免每次输入长命令:

module.exports = {
  apps: [{
    name: 'my_app',
    script: './my_app.js',
    cwd: '/完整的应用目录路径' // 比如 /home/user/projects/my_app
  }]
};

启动时执行:pm2 start ecosystem.config.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:51:20