咨询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块,加前缀反而会找不到对应配置。
排查之前失败的原因
大概率是这两个坑:
- 启动命令错误写成了
--env env_development,导致PM2无法匹配到对应的环境变量块; - 没有把
dotenv_config_path放在正确的env_*环境块中,或者遗漏了node_args的预加载配置。
验证配置是否生效
可以通过以下命令查看应用的环境变量,确认dotenv_config_path是否正确加载:
pm2 show app
在输出的Environment variables部分,你应该能看到对应的dotenv_config_path值。
内容的提问来源于stack exchange,提问作者Alias Alias
相关产品推荐
相关产品推荐

