【问题标题】:pm2 --update-env option seems not workingpm2 --update-env 选项似乎不起作用
【发布时间】:2017-01-07 03:26:28
【问题描述】:

我使用这样的生态系统.config.js 启动了我的节点应用程序。

pm2 start ecosystem.config.js

我的生态系统.config.js 在这里。

module.exports = {
  /**
  * Application configuration section
  * http://pm2.keymetrics.io/docs/usage/application-declaration/
  */
  apps : [
    // First application
    {
      name      : "API",
      script    : "./app/index.js",
      env: {
        COMMON_VARIABLE: "true"
      },
      env_production : {
        NODE_ENV: "production"
      }
    },
  ],

  /**
  * Deployment section
  * http://pm2.keymetrics.io/docs/usage/deployment/
  */
  deploy : {
    production : {
      user : "node",
      host : "212.83.163.1",
      ref  : "origin/master",
      repo : "git@github.com:repo.git",
      path : "/var/www/production",
      "post-deploy" : "npm install && pm2 startOrRestart ecosystem.json --env production"
    },
    dev : {
      user : "node",
      host : "212.83.163.1",
      ref  : "origin/master",
      repo : "git@github.com:repo.git",
      path : "/var/www/development",
      "post-deploy" : "npm install && pm2 startOrRestart ecosystem.json --env dev",
      env  : {
        NODE_ENV: "dev"
      }
    }
  }
}

然后我尝试更改配置文件以打开观看模式。我读了this document 所以,我添加了watch: true 属性,然后我尝试pm2 restart ecosystem.config.js --update-env 应用更改的配置。

应用程序重新启动并且属性似乎已更改,因为当我尝试pm2 list 时,观看已启用。但是我的应用程序在更改我的代码后没有重新启动。

所以,我只是尝试了pm2 delete 0pm2 start ecosystem.config.js 然后它运行良好。

为什么--update-env 选项不起作用?我做错了什么?

【问题讨论】:

    标签: node.js pm2


    【解决方案1】:

    我发现更新 pm2 应用程序配置的唯一可靠方法是 pm2 kill 停止守护程序,或 pm2 delete <id|name> && pm2 start ecosystem.config.js 用于单个应用程序(如 @hshan 所述)。

    此问题声称它已在 2014 年修复,但那里的 cmets 以及我发现的其他问题/问题似乎表明并非如此: https://github.com/Unitech/pm2/issues/528

    更新:这里也正在进行讨论:https://github.com/Unitech/pm2/issues/3192

    【讨论】:

    • 在大约半小时的 stackoverflow 之后,这为我完成了...pm2 kill 什么也没做,pm2 delete 然后pm2 start ecosystem.config.js 是要走的路!
    • #only this help me pm2 restart ecology.config.js --update-env --env production
    • 你是救世主
    【解决方案2】:

    pm2 restart <pid> --update-env 按照this 回答中的建议为我工作

    【讨论】:

      【解决方案3】:
      pm2 restart ecosystem.config.js --env production
      

      我不需要 --update-env 但我确实需要在重启时再次指定 env

      我发现的另一个选项是在 cmd 行上指定 var:

      MY_VAR=1234 pm2 restart ecosystem.config.js
      

      有趣的是,这会将其保留在以前的环境中,但 cmd 行 var 将覆盖您在生态系统.config.js 中为相同的 var 拥有的值。

      然而

      MY_VAR=1234 pm2 restart ecosystem.config.js --env production
      

      如果您在生态系统中定义了用于生产的 cmd 行 MY_VAR,将覆盖该行。

      【讨论】:

        【解决方案4】:

        尝试写入 Z:\ 驱动器时发生此更新错误

        但是,我的 Windows 操作系统机器中没有 Z:\ 驱动器

        以下帮助解决了问题:

        1 .添加用户环境变量如下:

        PM2_HOME=%USERPROFILE%\.pm2
        

        2 。然后杀死 pm2 守护进程一次

        pm2 kill
        

        现在pm2 update 工作正常。

        【讨论】:

          猜你喜欢
          • 2021-09-15
          • 2015-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-11
          • 1970-01-01
          • 2020-01-18
          相关资源
          最近更新 更多