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

为何Windows PowerShell中NPM脚本无法正确传递运行参数?

问题成因

该问题是PowerShell与Windows批处理脚本的参数解析机制不兼容导致,不属于npm本身的功能Bug:

  • Windows环境下的npm入口是npm.cmd批处理文件,当你在PowerShell中执行带--的npm命令时,--会被PowerShell的原生参数解析逻辑识别为自身的「停止解析标记」并提前消费,不会传递给npm.cmd进程
  • 缺少了--标记的npm无法区分传入参数是给npm自身的还是给执行脚本的,因此会默认吞掉后续的脚本参数
  • cmd环境下没有该参数解析逻辑,所以执行完全正常

解决方案

有三种可直接落地的解决方式:

  1. 给--增加引号包裹,强制PowerShell将其作为普通字符串传递给npm:
npm run index '--' -a -b -c
  1. 使用PowerShell原生的--%停止解析标记,告知PowerShell不对后续内容做任何解析,原样传递给目标程序:
npm run index --% -- -a -b -c
  1. 将npm升级到9.0.0及以上版本,该版本开始官方优化了Windows平台下PowerShell环境的参数接收适配,原生支持npm run index -- -a -b -c的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:03