You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PM2中传递--node-args参数并在Node.js代码中读取?

PM2启动Node.js脚本传参问题解决指南

一、脚本参数的正确传递方式

别再用--node-args传自定义参数了!这个参数是给Node.js运行时本身用的(比如调整内存限制、开启调试模式),不是给你的业务脚本用的。

要给脚本传递自定义参数,PM2里必须用--做分隔符,把PM2自身的配置参数和脚本参数区分开。正确的启动命令应该是:

pm2 start file.js --name myScript -- --variable=value

注意最后那个--,它后面的所有内容都会原封不动传递给你的Node.js脚本。

二、代码中正确读取参数

你之前在Windows下能用argv.variable直接取到值,应该是依赖了minimist这类参数解析库——原生的process.argv只是一个数组,不会自动把--key=value格式的参数解析成键值对。

方法1:用minimist(推荐)

先安装依赖:

npm install minimist

然后在代码里解析参数:

const argv = require('minimist')(process.argv.slice(2));
// 直接通过键名取值
const passedIn = argv.variable;
// 如果是要引入对应模块,就这么写:
// const passedIn = require(argv.variable);

方法2:原生JS手动解析

不想装第三方库?自己写几行代码就能搞定:

// 跳过process.argv前两个元素(分别是node执行路径和脚本文件路径)
const args = process.argv.slice(2);
const argMap = {};

args.forEach(arg => {
  if (arg.startsWith('--')) {
    // 拆分键名和对应值
    const [key, value] = arg.slice(2).split('=');
    argMap[key] = value;
  }
});

const passedIn = argMap.variable;

三、关于--node-args的正确用法

再明确一次:--node-args是用来传递给Node.js运行时的参数,比如给脚本增加内存上限的命令:

pm2 start file.js --name myScript --node-args="--max-old-space-size=2048"

硬要把--variable=value塞到--node-args里也能执行,但Node.js会直接忽略这些自定义参数,你的脚本根本拿不到,完全没必要这么做。

四、验证参数是否传递成功

担心参数没传对?在脚本开头加一段打印代码,启动后查看PM2日志就能确认:

const argv = require('minimist')(process.argv.slice(2));
console.log('当前接收的参数:', argv);

然后执行命令查看日志:

pm2 logs myScript

一眼就能看到参数是否正确传递。

内容的提问来源于stack exchange,提问作者Arkyris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:30:58