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

无法在apply-platform的node_modules子模块node-client中访问process.env变量

PM2 环境变量问题解决方案

1. node-client模块访问process.env的正确方式

Node.js 中process.env是进程级全局对象,同一进程下所有依赖模块共享该对象,node-client作为apply-platform的依赖模块,直接通过process.env.变量名访问即可,不需要额外的读取配置操作。
注意:process.env的所有属性值会被强制转为字符串类型,若要存储对象需先手动执行JSON序列化,读取时再反序列化。

2. process.env.env输出[object Object]的原因与修复

该问题是你的PM2 ecosystem.config.js配置写法错误导致:

  • PM2要求ecosystem.config.js中的env字段必须是扁平的字符串键值对,不允许嵌套对象。你当前把env字段又嵌套了一层env对象,PM2加载时会自动调用对象的toString()方法,最终就变成了[object Object]字符串,自然无法通过JSON.stringify解析。
  • 修复示例:
// 错误写法(嵌套了env对象)
module.exports = {
  apps: [
    {
      name: "www",
      script: "./server.js",
      env: {
        // 错误:嵌套对象
        env: {
          NODE_ENV: "test",
          REGION: "USEastTest"
        }
      }
    }
  ]
}
// 正确写法(扁平结构)
module.exports = {
  apps: [
    {
      name: "www",
      script: "./server.js",
      // 所有环境变量直接写在env下,不要嵌套
      env: {
        NODE_ENV: "test",
        REGION: "USEastTest",
        // 新增的变量直接在这里添加即可
        YOUR_NEW_VAR1: "value1",
        YOUR_NEW_VAR2: "value2"
      }
    }
  ]
}

3. 新增环境变量不生效的解决

修改完配置文件后必须按以下操作更新PM2进程的环境变量,否则PM2会复用旧的环境变量缓存:

  • 执行重载命令,必须加--update-env参数才会加载新的环境变量:
    pm2 reload ecosystem.config.js --update-env
  • 若重载仍不生效,可删除旧进程后重新启动:
    pm2 delete <你的进程ID或名称> && pm2 start ecosystem.config.js
  • 验证是否生效:执行pm2 env <进程ID>即可查看该进程当前加载的所有环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:12:02