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

package.json脚本设置环境变量不生效?求解决方案

解决npm脚本设置环境变量不生效的问题

以下是几个排查和解决的关键点:

  • 正确使用cross-env
    你之前的cross-env用法可能有误,正确的写法应该把目标命令(npm run dev)和环境变量设置放在同一个cross-env指令里,这样环境变量才会传递给子进程:

    "dev-use-auth": "cross-env auth=true npm run dev"
    

    不要用&&分隔,否则npm run dev会在新的shell环境中执行,无法继承之前设置的变量。

  • 检查dotenv的影响
    如果你的项目使用了dotenv加载.env文件,要确认:

    • 代码中dotenv.config()的调用顺序,确保它不会覆盖shell设置的环境变量(默认情况下,shell环境变量优先级高于.env文件)。
    • 没有设置override: true选项,否则.env里的auth=false会强制覆盖你设置的auth=true。
  • 注意环境变量的类型
    Node.js中所有环境变量都是字符串类型,所以判断时要比较字符串而非布尔值:

    // 错误写法
    if (process.env.auth === true) { ... }
    // 正确写法
    if (process.env.auth === "true") { ... }
    
  • 直接验证环境变量是否传递
    可以先修改脚本,直接打印环境变量来验证:

    "dev-use-auth": "cross-env auth=true node -e \"console.log(process.env.auth)\""
    

    运行这个脚本,如果输出true,说明变量设置没问题,问题出在npm run dev的执行上下文或代码判断逻辑里。

  • 操作系统兼容性(不用cross-env的情况)
    如果你不想用cross-env,需要针对不同系统写脚本:

    • Linux/macOS:"dev-use-auth": "auth=true npm run dev"
    • Windows:"dev-use-auth": "set auth=true && npm run dev"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:25:48