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

咨询PM2使用ecosystem.json配置dotenv_config_path的实现方法

解决方案

我之前也碰到过一模一样的问题,核心是要把PM2生态配置文件的环境变量和dotenv的加载逻辑对应上,以下是亲测可行的方案:

正确的ecosystem.json配置

创建或修改你的ecosystem.json文件,结构如下:

{
  "apps": [
    {
      "name": "app",
      "script": "./node_modules/react-scripts/bin/react-scripts.js",
      "args": "start",
      "node_args": "-r dotenv/config",
      // 开发环境专属变量
      "env_development": {
        "dotenv_config_path": ".env.development"
      },
      // 生产环境专属变量(按需添加)
      "env_production": {
        "dotenv_config_path": ".env.production"
      }
    }
  ]
}

关键配置细节

  • node_args: 必须保留-r dotenv/config,确保Node启动时预加载dotenv模块,这样它才能读取后续的环境变量配置。
  • env_*命名规则: PM2的环境块需要以env_为前缀,后面跟环境名称(比如development),启动时只需要指定前缀后的部分即可。
  • dotenv_config_path: 直接在对应环境块中设置目标.env文件路径,dotenv会自动识别这个环境变量并加载指定文件,不需要再在启动命令里传参数。

启动命令

用以下命令启动对应环境的服务:

pm2 start ecosystem.json --env development

⚠️ 注意:这里--env后面跟的是development,不是env_development——PM2会自动匹配配置里的env_development块,加前缀反而会找不到对应配置。

排查之前失败的原因

大概率是这两个坑:

  1. 启动命令错误写成了--env env_development,导致PM2无法匹配到对应的环境变量块;
  2. 没有把dotenv_config_path放在正确的env_*环境块中,或者遗漏了node_args的预加载配置。

验证配置是否生效

可以通过以下命令查看应用的环境变量,确认dotenv_config_path是否正确加载:

pm2 show app

在输出的Environment variables部分,你应该能看到对应的dotenv_config_path值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:38:05