PM2抛出NODE_APP_INSTANCE='0'无匹配配置警告并停止应用,求解决方案
错误原因
这个报错来自Node.js的config依赖库,该库默认会读取PM2自动注入的NODE_APP_INSTANCE环境变量,尝试加载对应后缀的实例专属配置文件,当匹配不到对应文件时就会抛出错误终止运行。
解决方案
方案1:清空NODE_APP_INSTANCE变量(最便捷)
在你的PM2配置文件每个app的env配置项中新增NODE_APP_INSTANCE为空,覆盖PM2自动注入的值即可,修改后的配置示例如下:
module.exports = { apps:[ { name: 'vhf_Api_1', script: 'npm', args: 'run start', exec_mode: 'fork', autorestart: true, watch: false, max_memory_restart: '1G', env: { HOST: '0.0.0.0', PORT: 3000, NODE_ENV: 'production', NODE_APP_INSTANCE: '' // 新增这行,剩余三个实例同理添加 }, output: './logs/console_one.log', error: './logs/consoleError_one.log', }, // 剩余三个vhf_Api_2/3/4的配置,均在对应env中添加NODE_APP_INSTANCE: ''即可 ], };
修改后删除旧的PM2进程,重新执行pm2 start ecosystem.config.js即可正常启动。
方案2:补全实例配置文件
如果你确实需要为不同实例分配不同配置,在你项目的config目录下,新增和NODE_ENV匹配的实例配置文件即可,你当前NODE_ENV为production,对应四个实例分别创建四个文件:
- config/production-0.js
- config/production-1.js
- config/production-2.js
- config/production-3.js
文件内容可以为空,也可以写入对应实例的专属配置参数,保存后重启应用即可。
方案3:移除无用config依赖
如果你的项目中并没有用到config库做配置管理,直接在项目依赖中删除该库即可,删除命令:npm uninstall config
删除后重启应用不会再触发该报错。
内容的提问来源于stack exchange,提问作者Derry Uk
相关产品推荐
相关产品推荐

