我正在尝试将一些参数传递给由pm2运行的Express应用程序。他们的文档中没有任何提示可以这样做,但似乎可以像SOME_STUFF=xxx pm2 start app.js
这样向您的节点应用程序传递一些环境变量。
pm2 restart all --update-env
问我怎么知道的...实际上这是可能的,我相信一段时间前PM2的文档中有提到过。
无论如何,以下是您需要执行的操作:
pm2 start app.js -- -some_stuff xxx
基本上,添加--
之后,您可以添加自己的应用程序参数。
成功找到来源,它被隐藏得相当好:http://pm2.keymetrics.io/docs/usage/quick-start/#42-ways-of-starting-processes
SOME_STUFF=xxx pm2 start app.js
生效了。你有什么想法为什么会这样? - devansvd环境变量不总是会自动更新,除非你强制更新。
SOME_STUFF=xxx pm2 start app.js --update-env
我之前在使用pm2 start app.js -- -some_stuff xxx
传递参数时遇到了问题,所以我改成了这样:SOME_STUFF=xxx OTHER_STUFF=abc pm2 start app.js
。
然后当我运行pm2 logs
时,我能够看到我的应用程序成功启动,并且环境变量设置正确,而之前当我运行pm2 logs
时会出现与这些变量相关的错误。
module.exports = {
apps: [
{
name: "project-name",
exec_mode: "cluster",
instances: "1",
script: "./server/index.js", // your script
args: "start",
env: {
NODE_ENV: "production",
SOME_ENV: "some_value"...
},
},
],
};
在控制台中:
pm2 start ecosystem.config.js
在PM2官方文档中,有有关配置环境变量的信息。
当我使用以下命令时,我的Node应用程序(SvelteKit构建)将在Ubuntu服务器上启动:
node build/index.js
并包括环境变量。
所以,通过使用pm2,我发现我的应用程序在启动时使用了环境变量:
pm2 "node build/index.js"