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

更新ecosystem.config.js后Node应用仍用旧环境变量的排查求助

PM2环境变量未更新排查方案

问题背景

接手的服务器通过PM2+Nginx运行多个Node应用,新增应用时环境变量配置出错。修改ecosystem.config.js移除了NODE_EXTRA_CA_CERTS,并将NODE_TLS_REJECT_UNAUTHORIZED从0改为1,执行pm2 reload ecosystem.config.js --update-env和pm2 save后,应用仍在使用旧环境变量。已检查ecosystem.config.js和Nginx的sites-available目录配置,未发现问题。

环境变量排查步骤

1. 验证PM2是否加载新配置

  • 执行pm2 show new-app-name,查看输出中的env字段,确认是否与新配置一致。如果这里还是旧配置,说明PM2未正确读取配置文件,可能是执行命令时的目录不对,或者配置文件路径有误。
  • 执行pm2 describe new-app-name,查看environment variables部分,检查是否残留旧变量。

2. 清理PM2持久化缓存

PM2的持久化配置存储在PM2_HOME目录(此处为/home/pm2/.pm2),仅重载可能无法彻底更新,需重置应用配置:

  • 停止应用:pm2 stop new-app-name
  • 删除应用的PM2配置:pm2 delete new-app-name
  • 重新从配置文件启动:pm2 start ecosystem.config.js
  • 保存新配置:pm2 save

3. 检查全局/用户级环境变量

当前环境变量中仍存在旧变量,可能是系统或用户全局配置中设置的:

  • 查看PM2运行用户(pm2用户)的配置文件:/home/pm2/.bashrc、/home/pm2/.bash_profile、/home/pm2/.profile,检查是否有export相关变量的语句。
  • 查看系统级环境变量文件:/etc/environment、/etc/profile、/etc/profile.d/*.sh,全局变量会被PM2继承。

4. 检查PM2系统服务配置

如果PM2是以系统服务运行(比如通过pm2 startup设置),服务启动时可能加载了额外环境变量:

  • 查看PM2服务配置文件(如/etc/systemd/system/pm2-pm2.service,路径随系统不同可能变化),检查Environment字段是否设置了相关变量。
  • 若为systemd服务,修改配置后需重新加载:systemctl daemon-reload,再重启PM2服务:systemctl restart pm2-pm2

5. 检查应用代码或本地配置文件

部分应用会自行读取本地配置文件或硬编码变量:

  • 检查应用目录下的.env、.env.production等文件,确认是否存在旧环境变量。
  • 搜索应用代码,查看是否有直接设置NODE_TLS_REJECT_UNAUTHORIZED或NODE_EXTRA_CA_CERTS的语句。

附:相关配置信息

旧ecosystem.config.js配置片段

{
    name: "new-app-name",
    script: '/var/www/myNewApp.com/NEW-APP/app.js',
    watch_delay: 1000,
    exec_interpreter: "node@18.17.1",
    watch_delay: 1000,
    watch: true,
    env: {
                    "PORT"         : 4000,
                    "NODE_ENV"     : "production",
                    "PROTOCOL"     : "https",
                    "DOMAIN"       : "myDomain",
                    "EXTENSION"    : "com",
                    "PWD"          : "myPassword",
                    "USE_LONGJOHN" : false,
                    "NODE_TLS_REJECT_UNAUTHORIZED" : 0,
                    "NODE_EXTRA_CA_CERTS":  "/path/to/cert.pem"
                      }
}

新ecosystem.config.js配置片段

{
    name: "new-app-name",
    script: '/var/www/myNewApp.com/NEW-APP/app.js',
    watch_delay: 1000,
    exec_interpreter: "node@18.17.1",
    watch_delay: 1000,
    watch: true,
    env: {
                    "PORT"         : 4000,
                    "NODE_ENV"     : "production",
                    "PROTOCOL"     : "https",
                    "DOMAIN"       : "myDomain",
                    "EXTENSION"    : "com",
                    "PWD"          : "myPassword",
                    "USE_LONGJOHN" : false,
                    "NODE_TLS_REJECT_UNAUTHORIZED" : 1,
                      }
}

重载后当前环境变量

node_version: 18.17.1
version: 1.0.0
unique_id: c96e0ae4-d2a7-49fd-8f41-d1eca6a5edff
ldap: {}
PM2_HOME: /home/pm2/.pm2
NODE_TLS_REJECT_UNAUTHORIZED: 0
NODE_EXTRA_CA_CERTS: /path/to/cert.pem
USE_LONGJOHN: false
EXTENSION: com
DOMAIN: mydomain
PROTOCOL: https
NODE_ENV: production
PORT: 4000
USER: pm2
SSH_CLIENT: 172.0.0.0 56122 22
XDG_SESSION_TYPE: tty
SHLVL: 1
MOTD_SHOWN: pam
HOME: /home/pm2
OLDPWD: /var/www/ldap.com/EDE-LDAP
NVM_BIN: /home/admin/.nvm/versions/node/v14.18.2/bin
SSH_TTY: /dev/pts/0
NVM_INC: /home/admin/.nvm/versions/node/v14.18.2/include/node
DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus
NVM_DIR: /home/admin/.nvm
LOGNAME: pm2
_: 7
XDG_SESSION_CLASS: user
TERM: xterm-256color
XDG_SESSION_ID: 15
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
XDG_RUNTIME_DIR: /run/user/1000
LANG: en_US.UTF-8
SHELL: /bin/sh
LESSCLOSE: /usr/bin/lesspipe %s %s
PWD: myPassword
SSH_CONNECTION: 172.0.0.0 56122 172.0.0.0 22
NVM_CD_FLAGS:
XDG_DATA_DIRS: /usr/local/share:/usr/share:/var/lib/snapd/desktop
PM2_USAGE: CLI
PM2_JSON_PROCESSING: true
NODE_APP_INSTANCE: 0
vizion_running: false
km_link: false
watch_delay: 1000
namespace: default
script: /var/www/myNewApp.com/NEW-APP/app.js

内容的提问来源于Stack Exchange,提问作者Erin Tripp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:49