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

package.json脚本传参未获process.env.option识别,加载异常库存

问题根源

你当前代码逻辑读取的是Node.js运行时的环境变量,但package.json脚本中配置的--option oos是脚本执行附带的进程命令行参数,二者不属于同一个存储体系,因此无法正确读取到传参值。

  • 跟在ts-node src/xxx.ts后面的--option oos参数,会被Node.js挂载在process.argv数组中,不会自动写入process.env对象。
  • 此时代码里process.env.option的实际值为undefined,三元判断的等式永远不成立,程序会一直走else分支加载有库存的insUpdates数据集,和执行update:oos的预期不符。
可行解决方法

方案1:调整package.json脚本配置,显式注入环境变量

不使用跟在脚本路径后的传参形式,前置给进程传入对应环境变量,原有代码的判断逻辑无需修改即可正常运行:

// package.json 脚本配置调整示例
"update:oos": "cross-env option=oos ts-node src/loaders/mock/update-variants.ts",
"update:ins": "cross-env option=ins ts-node src/loaders/mock/update-variants.ts"

注:使用cross-env依赖是为了兼容Windows、Mac、Linux不同操作系统的环境变量赋值语法,避免跨系统执行时出现识别失败的问题。

方案2:保留现有脚本配置,调整代码参数读取逻辑

如果不想改动现有package.json的传参形式,就不要从process.env读取值,直接从进程命令行参数process.argv中解析传入的option值即可,示例解析逻辑:

// 兼容 --option oos 空格分隔的传参写法
const optionIndex = process.argv.indexOf("--option")
const argOption = optionIndex > -1 ? process.argv[optionIndex + 1] : ""
const updates = argOption === "oos" ? oosUpdates : insUpdates

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 15:15:01