pm2 --update-env 选项似乎不起作用
pm2 --update-env option seems not working
我像这样使用 ecosystem.config.js 启动了我的节点应用程序。
pm2 start ecosystem.config.js
我的 ecosystem.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 0
,pm2 start ecosystem.config.js
然后效果很好。
为什么 --update-env
选项不起作用?我做错了什么?
我发现更新 pm2 应用程序配置的唯一可靠方法是 pm2 kill
停止守护程序,或 pm2 delete <id|name> && pm2 start ecosystem.config.js
用于单个应用程序(如@hshan 所述)。
这个问题声称它已在 2014 年修复,但那里的评论以及我发现的其他 questions/issues 的字符串似乎另有说明:
https://github.com/Unitech/pm2/issues/528
更新:这里也正在进行讨论:https://github.com/Unitech/pm2/issues/3192
尝试写入 Z:\ 驱动器时发生此更新错误
但是,我的WindowsOS机器中没有Z:\驱动器
以下有助于解决问题:
1。添加用户环境变量如下:
PM2_HOME=%USERPROFILE%\.pm2
2。然后杀死 pm2 守护进程一次
pm2 kill
现在 pm2 update
工作正常。
pm2 restart <pid> --update-env
按照 回答
中的建议为我工作
pm2 restart ecosystem.config.js --env production
我不需要 --update-env 但我确实需要在重启时再次指定环境
我发现的另一个选项是在 cmd 行上指定 var:
MY_VAR=1234 pm2 restart ecosystem.config.js
有趣的是,这将它保留在之前的环境中,但 cmd 行 var 将覆盖您在 ecosystem.config.js 中的相同变量的值。
但是
MY_VAR=1234 pm2 restart ecosystem.config.js --env production
如果您在生产生态系统中定义了命令行 MY_VAR,将覆盖该命令行。
我像这样使用 ecosystem.config.js 启动了我的节点应用程序。
pm2 start ecosystem.config.js
我的 ecosystem.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 0
,pm2 start ecosystem.config.js
然后效果很好。
为什么 --update-env
选项不起作用?我做错了什么?
我发现更新 pm2 应用程序配置的唯一可靠方法是 pm2 kill
停止守护程序,或 pm2 delete <id|name> && pm2 start ecosystem.config.js
用于单个应用程序(如@hshan 所述)。
这个问题声称它已在 2014 年修复,但那里的评论以及我发现的其他 questions/issues 的字符串似乎另有说明: https://github.com/Unitech/pm2/issues/528
更新:这里也正在进行讨论:https://github.com/Unitech/pm2/issues/3192
尝试写入 Z:\ 驱动器时发生此更新错误
但是,我的WindowsOS机器中没有Z:\驱动器
以下有助于解决问题:
1。添加用户环境变量如下:
PM2_HOME=%USERPROFILE%\.pm2
2。然后杀死 pm2 守护进程一次
pm2 kill
现在 pm2 update
工作正常。
pm2 restart <pid> --update-env
按照
pm2 restart ecosystem.config.js --env production
我不需要 --update-env 但我确实需要在重启时再次指定环境
我发现的另一个选项是在 cmd 行上指定 var:
MY_VAR=1234 pm2 restart ecosystem.config.js
有趣的是,这将它保留在之前的环境中,但 cmd 行 var 将覆盖您在 ecosystem.config.js 中的相同变量的值。
但是
MY_VAR=1234 pm2 restart ecosystem.config.js --env production
如果您在生产生态系统中定义了命令行 MY_VAR,将覆盖该命令行。