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

标签 node.js express pm2

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

我了解到您可以通过设置 NODE_ENV=production 获得很多好处。

我在 pm2 文档中找到了这个:

[process.json]
"env_production" : {
  "NODE_ENV": "production"
}

...

$ pm2 start process.json --env production

所以,我做到了,但我不知道它是否有效。在试图弄清楚如何检查它时,我学会了尝试:

$ node
> process.env.NODE_ENV
> undefined

所以,这不是一个好兆头.. 但是,由于我对低级东西如何工作的了解有限,我可以猜测 pm2 可能会将每个应用程序作为单独的 Node 进程启动?所以当我尝试检查它时,也许我没有在正确的过程中。

另外,我不知道是否必须创建一个新的 ~/.pm2/dump.pm2 文件,因为这可能会覆盖我设置的选项? (因为我使用了pm2 startup)。

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

最佳答案

回答标题中的实际问题:

在您的脚本中,对我来说,我的 Express 应用程序的 app.js 文件,您可以使用 process.env.NODE_ENV 来获取 NODE_ENV< 的当前值 并根据需要将其注销。

更好的方法是使用 PM2 的 Process Metrics 模块,即 pmx

yarn add pmx

npm install pmx --save

然后

const Probe = require('pmx').probe()

Probe.metric({
  name    : 'NODE_ENV',
  value   : function() {
    return process.env.NODE_ENV
  }
})

现在它将显示在对 pm2 monit 的调用中(左下角)。


改变你的环境:

您必须终止并重新启动该进程以更改您的环境。

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

以下还不够:

pm2 restart pm2.json --env production

关于node.js - 如何检查我的 pm2 应用程序 NODE_ENV 是否已设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38002327/

相关文章:

node.js - 我仍然可以将 NodeJs + Express + MongoDb 与 firebase 结合使用吗?

node.js - 将 PM2 日志写入自定义路径

gruntjs - 使用 PM2 启动 gruntserve

node.js - Nodejs 应用程序无法在 Nodeclipse 中运行

javascript - 如何通过单击 Express 中的按钮将用户重定向到同一域上的不同路径?

node.js - 使用 NodeJS+express 在 Cloud Foundry 应用程序中进行相互身份验证

javascript - NodeJs : How can I see the log of a NodeJs server running by PM2 in a EC2 instance

node.js - 如何使用包含数据库创建的 dockerfile 构建 docker 镜像

node.js - aws xray 采样不适用于 http 状态代码

node.js - 如何显示弹出窗口而不是重定向到 Facebook?