PM2环境变量缓存

时间:2016-09-29 20:31:51

标签: node.js ubuntu-16.04 pm2

我在Ubuntu 16.04上运行PM2,似乎环境变量以某种方式被缓存。有没有办法看到PM2正在使用哪些环境变量。它可以以某种方式看到的环境变量在我的终端会话中不再可用<form method="post" action=""> a: <input name="a" value=""><br> b: <input name="b" value=""><br> <input type="submit"> </form>

我创建了这样的环境变量:

echo $VAR_NAME

使用以下方法删除环境变量:

export VAR_NAME=value

没有工作PM2顽固地坚持环境变量 - 即使经过各种重启&amp; ssh会话。让我困惑: - /

有没有办法清除PM2正在使用的环境变量?或者至少看看它知道哪些环境变量?

1 个答案:

答案 0 :(得分:6)

更新到原始答案:

如果环境变量&#39;预设值,如在开发,登台和生产中使用不同的env变量的情况下,有一个使用process.json文件的选项。

以下是node.js app的示例:

{
  "apps" : [{
    "env": { 
     // in this section you would list variables that you 
     // want available in all cases
      "NODE_PATH": "..."
    },
    "env_development": {
      "CONFIG": "dev.conf.json",
      "NODE_ENV": "development"
    },
    "env_production" : {
       "CONFIG": "conf.json",
       "NODE_ENV": "production"
    },
    "exec_mode": "fork", // or cluster if that's what you want
    "name"        : "my_app",
    "script"      : "/var/my_app/app.js", //srcipt's path
    "watch"       : false // don't restart on file changes
  }]
}

定义此文件,并使用env的可能值,您可以通过重新启动应用程序来切换环境,如下所示:

  1. 正常启动应用:pm2 start process.json --env development

  2. 如果您想切换到其他环境:pm2 restart process.json --env production

  3. 有关process.json的更多信息以及可能的选项:PM2 - Process File

    原始答案:

    你必须先杀掉pm2。

    pm2 kill

    pm2 start app.js

    PM2保留了它在启动时读取的环境变量,每次都不会重读它们的值。

    我快速搜索了它,并在github上找到了这个问题:https://github.com/Unitech/pm2/issues/83,Unitech的回答证实了这一点。

    在此特定评论中:https://github.com/Unitech/pm2/issues/83#issuecomment-29837221

    Unitech说:

      

    是的,这是&#34; cluster_mode&#34;中的正常现象。当pm2将你的代码包装到他自己的上下文(和自己的变量)时,你会得到启动pm2时已经存在的内容。