PM2环境variablescaching

我在Ubuntu 16.04上运行PM2,似乎环境variables正在被caching。 有没有办法看到哪些环境variablesPM2正在使用。 它可以以某种方式看到的环境variables不再在我的terminal会话中可用echo $VAR_NAME

我创build了这样的环境variables:

 export VAR_NAME=value 

使用以下命令删除环境variables:

 unset VAR_NAME 

不工作PM2固执地坚持环境variables – 即使在各种重启和ssh会话之后。 渲染我困惑: – /

有没有办法刷新PM2正在使用的环境variables? 或者至less看看它知道哪些环境variables?

更新到原来的答案:

如果环境variables的值是预先设置的,例如在开发,暂存和生产中使用不同的envvariables,则有一个使用process.json文件的选项。

下面是一个node.js应用程序的示例:

 { "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. 当你想切换到不同的env: pm2 restart process.json --env production

有关process.json和可能的选项的更多信息: PM2 – Process File


原始答案:

你必须先杀死pm2。

pm2 kill

pm2 start app.js

PM2保存启动时读取的环境variables,它不会每次重新读取它们的值。

我search了很快,发现这个问题在github上: https : //github.com/Unitech/pm2/issues/83,Unitech的答案证实了这一点。

在这个特别的评论: https : //github.com/Unitech/pm2/issues/83#issuecomment-29837221

Unitech说:

是的,这在“cluster_mode”中是正常的。 当pm2将你的代码包装到自己的上下文(以及自己的variables)时,你会得到启动pm2时已经存在的内容。