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

turbo/no-undeclared-env-vars无法识别turbo.json配置变更求助

解决Turborepo中turbo/no-undeclared-env-vars规则缓存异常的方案

核心问题定位

这是Turborepo任务缓存与ESLint本地缓存协同导致的问题:即便关闭了Turborepo的lint任务缓存,ESLint自身的本地缓存(如.next/.cache/.eslint)仍会留存旧校验结果,且Turborepo的环境变量变更未被ESLint缓存系统识别为重新校验的触发信号。

具体解决步骤

  • 强制ESLint跳过自身缓存
    修改项目(或子项目)package.json中的lint脚本,添加--no-cache参数,确保每次lint都全量重新校验:

    {
      "scripts": {
        "lint": "eslint . --no-cache"
      }
    }
    
  • 配置Turborepo缓存触发器
    在turbo.json中给lint任务添加环境变量依赖,让Turborepo识别环境变量变更并自动失效缓存:

    {
      "pipeline": {
        "lint": {
          "cache": true,
          "env": ["HELLO"]
        },
        "build": {
          "dependsOn": ["^build", "$HELLO"],
          "outputs": ["dist/**", ".next/**"]
        }
      }
    }
    

    这里lint任务的env字段声明依赖HELLO变量,当变量或turbo.json相关配置变更时,会自动触发lint重新执行。

  • 清理Turborepo全局缓存
    若上述方法无效,手动清除Turborepo全局缓存(默认路径~/.turbo):

    rm -rf ~/.turbo
    

    这会清空所有Turborepo存储的任务缓存,确保后续任务完全重新执行。

  • 明确ESLint规则的环境变量白名单
    在项目根目录.eslintrc.js中声明允许的环境变量,从根源减少规则误判:

    module.exports = {
      rules: {
        "turbo/no-undeclared-env-vars": [
          "error",
          {
            allowList: ["HELLO"]
          }
        ]
      }
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:50:28