【问题标题】:Read command line arguments passed to node.js using pm2使用 pm2 读取传递给 node.js 的命令行参数
【发布时间】:2016-01-06 16:45:20
【问题描述】:

我知道如何使用 pm2 将变量传递给 node.js。但是我该如何阅读它们呢? process.argv 不包含它。

这就是我所指的。

Passing environment variables to node.js using pm2

更新

pm2 start file_name.js -- -my_port 8080 是正确的做法。 process.argv 将包含参数。

但是运行 pm2 describe file_name 仍然显示 args -3000,这是一个缓存值。 重新启动系统给了我在重新启动之前最后传递的参数,在我的例子中是 3000。

【问题讨论】:

  • 请提供您如何传递变量的示例。
  • 这里是 pm2 start fetch.js -- -port 80
  • 删除进程并重新启动也无济于事。

标签: node.js pm2


【解决方案1】:

我认为你很困惑:

  • node_args

node_args 列出 ["--harmony", "--max-stack-size=1024"] 启动时提供给节点的参数

这些是node 可执行选项,例如--harmony--debug=7001。欲了解更多信息,请参阅node --help

  • args

args list ["--enable-logs", "-n", "15"] 应用程序启动时提供的参数

这些是您的脚本参数。在 json 声明中,它是 arg 属性,但在命令行中,语法是:

pm2 start app.js -- arg1 arg2

这些应该在process.argv 中可用。

Reference

【讨论】:

  • 谢谢,我有点困惑。这是我要传递的命令行参数。运行以下命令 pm2 start fetch.js -- -port 3000 我在 process.argv [ '/usr/bin/nodejs', '/usr/lib/node_modules/pm2/lib/FetchFork.js', ' -端口','80']
  • 端口 80 是我昨天作为参数传递的。很明显,这里发生了某种缓存。
  • 是的,一旦进程在内存中,参数可能会保持不变。如果它已经启动,则使用新参数重新启动它。
【解决方案2】:

来自Node.js doc about process.argv

一个包含命令行参数的数组。

它不包含环境变量。您可以使用

访问ENV_VARIABLE环境变量
process.env.ENV_VARIABLE

this answer

【讨论】:

    猜你喜欢
    • 2022-10-02
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2011-05-20
    相关资源
    最近更新 更多