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

Node.js package.json脚本:Windows下ts-node传JSON参数报错求助

跨平台解决ts-node传递JSON配置的问题

问题根源

Linux bash支持用单引号包裹JSON参数,但Windows CMD/PowerShell不识别单引号;直接尝试转义双引号时,因package.json本身是JSON格式,嵌套转义规则容易导致解析错误。

解决方案

方案1:使用ts-node键值对参数格式(最简便)

ts-node的-O/--options参数支持直接传递键值对,无需包裹完整JSON对象,多参数用逗号分隔。修改后的脚本:

{
  "scripts": {
    "fix:formatting-translation": "ts-node -O module=commonjs tools/sortTranslation.ts"
  }
}

该写法完全避开引号问题,在Linux和Windows平台均可正常执行。

方案2:用ASCII转义序列替代双引号

利用双引号的ASCII十六进制转义码\x22替换JSON中的双引号,同时在package.json里对反斜杠做转义(写成\\x22),确保跨平台解析:

{
  "scripts": {
    "fix:formatting-translation": "ts-node -O {\\x22module\\x22: \\x22commonjs\\x22} tools/sortTranslation.ts"
  }
}

bash和Windows CMD都会将\x22解析为双引号,从而正确识别JSON配置。

方案3:正确嵌套转义双引号

如果必须传递完整JSON对象,需遵循package.json的JSON转义规则:脚本内的双引号用\转义,而package.json中\需再次转义为\\,最终写法:

{
  "scripts": {
    "fix:formatting-translation": "ts-node -O \"{\\\"module\\\": \\\"commonjs\\\"}\" tools/sortTranslation.ts"
  }
}

该方案可跨平台生效,但可读性较差,优先推荐前两种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:57:32