PM2无法读取当前Bash会话环境变量,如何解决?
解决PM2无法读取当前Bash会话环境变量的问题
PM2启动的进程默认不会自动继承当前Bash会话中未导出的环境变量,这就是直接用node能读到变量、PM2却不行的核心原因。以下是几种可行的解决方法:
方法1:启动时直接传递环境变量
在PM2启动命令里明确指定要传递的变量,让进程直接获取当前会话的变量值:
pm2 start dist/index.js --env URL=$URL
方法2:使用PM2配置文件
创建ecosystem.config.js配置文件,在其中引用当前会话的环境变量:
module.exports = { apps: [{ name: 'your-express-app', script: 'dist/index.js', env: { URL: process.env.URL } }] };
然后通过配置文件启动应用:
pm2 start ecosystem.config.js
方法3:导出环境变量后再启动PM2
如果你的环境变量只是当前会话临时定义的,先将其导出为全局可用的变量,再启动PM2:
export URL=http://ec2-51-20-6-22.eu-north-1.compute.amazonaws.com pm2 start dist/index.js
要是需要永久生效,把export URL=xxx添加到~/.bashrc或~/.bash_profile文件中,执行source ~/.bashrc(对应你修改的文件)刷新会话后,再启动PM2就能自动读取该变量。
内容的提问来源于stack exchange,提问作者Hossam Hamza
相关产品推荐
相关产品推荐

