【问题标题】:How to pass NODE_ENV=production to pm2?如何将 NODE_ENV=production 传递给 pm2?
【发布时间】:2022-03-16 00:33:29
【问题描述】:

我已经部署了this node app,并且使用NODE_ENV=production yarn start 运行良好。

我可以使用

妖魔化应用程序

pm2 start npm -- start

但它默认为NODE_ENV=development config。

当我使用时

pm2 start npm -- start NODE_ENV=production

它仍然以 development 配置开头。

我还尝试使用process.yml 文件传递​​环境

apps:
  - script   : index.js
    watch: true
    instances: 4
    env    :
      NODE_ENV: production

pm2 start npm -- start process.yml 仍会加载开发配置。

我该如何解决这个问题?

【问题讨论】:

  • 就这样吧..先删除当前的pm2实例。您可以使用pm2 delete your_app.js 执行此操作,然后执行此NODE_ENV=production pm2 start your_app.js。这应该有效。

标签: node.js pm2


【解决方案1】:

您可能会遇到这种情况的原因是因为您曾经以development 开始pm2。现在它将使用该环境,直到您 kill 它。遵循这些步骤应该会有所帮助

  1. ./node_modules/.bin/pm2 kill
  2. NODE_ENV=production ./node_modules/.bin/pm2 start server.js

您也可以使用--update-env。来自official docs

默认情况下,我们希望 PM2 不会改变进程环境,而 重新启动或重新加载,因此它们是不可变的。如果你想更新 他们,你必须使用 --update-env :

【讨论】:

  • 那么./node_modules/.bin/pm2 kill 的结果是No such file or directory。也不知道如何在我的命令pm2 start npm -- start 中使用--update-env。我试过pm2 start npm -- start --update-env,但它仍然在开发模式下运行。我什至卸载了 pm2 并重新安装它,但是pm2 start process.yml 仍然运行开发模式。
  • 您必须已全局安装pm2。只需执行pm2 killNODE_ENV=production pm2 start server.js
【解决方案2】:

试试这个: export NODE_ENV=production&&pm2 start server.js

【讨论】:

    【解决方案3】:
    export NODE_ENV=production && pm2 start ecosystem.config.js 
    

    以下线路帮助了我!感谢#mehdi parastar#abhinavd

    【讨论】:

      【解决方案4】:

      你可以用这个命令解决它(带双引号):

      sudo pm2 start "NODE_ENV=production yarn start"
      

      【讨论】:

        【解决方案5】:

        试试这个,如果你使用的是 pm2,下面的代码对我有用

        sudo NODE_ENV=production pm2 start app.js

        【讨论】:

          猜你喜欢
          • 2014-01-31
          • 1970-01-01
          • 2019-04-15
          • 2021-07-11
          • 2021-08-18
          • 2012-03-04
          • 2019-12-26
          • 1970-01-01
          相关资源
          最近更新 更多