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

如何为可执行/启动器脚本启动的Node.js传递命令行参数

给Node.js进程传递参数的两种场景解决方案

一、给可执行脚本启动的Node进程传命令行参数

如果你的脚本是用#!/usr/bin/env node开头的可执行文件(比如自己写的CLI工具),传递参数非常直接——直接把参数加在脚本命令后面就行。

比如你有个叫my-cli的可执行脚本,运行时直接写:

my-cli --foo bar hello world

在Node代码里,你可以通过process.argv数组获取这些参数:

// 打印所有参数
console.log(process.argv);
// 输出大概是:[ '/path/to/node', '/path/to/my-cli', '--foo', 'bar', 'hello', 'world' ]

注意前两个元素固定是Node可执行文件的路径和脚本本身的路径,从第三个元素开始才是你传递的自定义参数。

二、给npm启动器脚本(node_modules/.bin下的脚本)传Node本身的参数

你提到的像micro、moleculer这类框架的启动脚本,都是npm放在node_modules/.bin里的sh/CMD脚本,直接给这些脚本加--inspect、-r这类Node级别的参数是无效的——因为这些参数是传给Node进程的,不是传给框架脚本的。这里有三种靠谱的解决方法:

方法1:用NODE_OPTIONS环境变量(最方便的临时方案)

Node.js原生支持NODE_OPTIONS环境变量,它会把里面的参数自动传给所有启动的Node进程。完美解决你需要给框架脚本附加Node参数的场景。

比如你要实现等效于node --inspect -r ts-node/register -r dotenv-safe/config src/index.ts的效果,但用micro的启动脚本:

  • Linux/macOS:在终端先设置环境变量,再运行脚本
    export NODE_OPTIONS="--inspect -r ts-node/register -r dotenv-safe/config"
    micro src/index.ts
    # 或者如果是npm脚本(比如package.json里"start": "micro src/index.ts")
    npm run start
    
  • Windows命令行:
    set NODE_OPTIONS="--inspect -r ts-node/register -r dotenv-safe/config"
    npm run start
    
  • Windows PowerShell:
    $env:NODE_OPTIONS="--inspect -r ts-node/register -r dotenv-safe/config"
    npm run start
    

这个方法的好处是不用修改任何配置,临时生效,适合开发时调试用。缺点是会影响当前终端里所有启动的Node进程,如果同时运行多个项目要注意。

方法2:直接用node命令运行框架脚本的入口文件

找到框架启动脚本对应的Node源码文件(比如micro的入口是node_modules/micro/bin/micro.js),然后直接用node命令带参数运行它:

node --inspect -r ts-node/register -r dotenv-safe/config node_modules/micro/bin/micro.js src/index.ts

这种方式完全绕开了node_modules/.bin的脚本,直接控制Node进程的参数,适合需要精确控制的场景。

方法3:修改npm脚本(固定配置方案)

如果这个参数组合是你常用的,可以直接把node命令和参数写进package.json的scripts里:

{
  "scripts": {
    "start": "node --inspect -r ts-node/register -r dotenv-safe/config node_modules/micro/bin/micro.js src/index.ts"
  }
}

之后运行npm run start就会自动用这些参数启动进程,适合长期固定的开发配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:59:58