如何检查我的pm2应用程序NODE_ENV是否正在设置?

所以我刚刚第一次部署了一个节点和pm2的站点,然后回去做一些优化和阅读最佳实践等。

我读过,你可以通过设置NODE_ENV=production来获得很多好处。

我在pm2文档中find了这个:

 [process.json] "env_production" : { "NODE_ENV": "production" } ... $ pm2 start process.json --env production 

所以,我做了,但我不知道它是否工作。 当试图找出如何检查它,我学会了尝试:

 $ node > process.env.NODE_ENV > undefined 

所以,这不是一个好兆头,但是,由于我对低级别工作的理解有限,我可以猜测,也许pm2会将每个应用程序作为单独的节点进程启动? 所以当我尝试检查时,可能我没有find正确的方法。

另外,我不知道是否必须创build一个新的〜/ .pm2 / dump.pm2文件,因为也许每当这可能覆盖我设置的选项? (因为我用pm2 startup )。

如何检查我的pm2应用程序的NODE_ENV是否已设置?

编辑:

看来,实际上所有必要的是你杀了并重新启动过程来改变你的环境。

 $ pm2 kill && pm2 start pm2.json --env production 

以下是不够好的:

 pm2 restart pm2.json --env production 

你必须杀死这个过程


先前的回答:

所以,我得到它的工作。 我认为这与init脚本中保存的环境有关,因为擦除所有内容并重新开始工作。

这是我做的。

 $ pm2 stop all && pm2 kill && rm -R ~/.pm2 && sudo rm -R /root/.pm2 $ pm2 startup 

其中输出以下命令为我复制粘贴:

 $ sudo su -c "env PATH=$PATH:/usr/bin pm2 startup linux -u myusername --hp /home/myusername" 

接着:

 /srv/http/project $ pm2 start pm2.json --env production 

pm2.json是我的configuration文件。

然后我检查了日志,果然,它说production而不是undefined

所以,总结一下,我不认为我有什么问题,但是我已经生成了init脚本并保存了configuration,并且由于某种原因它没有使用新的环境。

你的process.json文件不完整。 尝试使用这样的东西:

 [process.json] { "name" : "MyApp", "script" : "myapp.js", "env_production" : { "NODE_ENV": "production" } } 

然后将日志添加到您的代码中,最好是在启动时的somwhere:

 console.log("NODE_ENV : ", process.env.NODE_ENV); 

现在启动应用程序:

 pm2 start process.json --env production 

最后观看应用程序日志:

 pm2 logs MyApp 

这应该做到这一点。

可能在服务器脚本的开始处,您可以打印环境variables的值,然后检查PM2日志。 使用下面的代码来打印您的环境variables值:

 console.log('process.env.NODE_ENV:', process.env.NODE_ENV); 

然后使用下面的代码来查看PM2日志

pm2日志app_name

这里app_name是你的进程名称,如process.json文件中的条目所示。

把它join到你的package.json ,用npm来启动它:

 "scripts": { "myScript": "NODE_ENV=production pm2 start server.js" } 

然后

 npm start myScript 

你也可以直接做,但这很容易pipe理,自动化和crontab ,并在你的源代码pipe理…