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

Redux Toolkit Query中'builder is not defined' ESLint错误求助

解决Redux Toolkit Query中ESLint报'builder is not defined'的问题

问题背景

使用Redux Toolkit Query开发cryptoApi时,src/services/cryptoApi.js第17、18行触发ESLint的no-undef规则,提示'builder is not defined',但代码中endpoints函数确实传入了builder参数。

排查方向

这个报错是因为ESLint的no-undef规则默认会标记所有未在当前作用域显式声明的变量,而Redux Toolkit Query的createApi方法中endpoints的builder参数属于框架注入的变量,ESLint默认无法识别。

解决方案

方案1:使用专门的ESLint插件(推荐)

安装eslint-plugin-redux-toolkit插件,它能自动识别Redux Toolkit的语法规则,避免误报:

  1. 安装依赖:
    npm install eslint-plugin-redux-toolkit --save-dev
    # 或使用yarn
    yarn add eslint-plugin-redux-toolkit -D
    
  2. 修改ESLint配置文件(如.eslintrc.js):
    module.exports = {
      plugins: ['redux-toolkit'],
      extends: [
        // 保留你原有的extends配置,比如'react-app'、'eslint:recommended'等
        'plugin:redux-toolkit/recommended'
      ]
    }
    

方案2:局部禁用ESLint规则(临时应急)

如果不想安装插件,可以在报错代码附近添加注释,局部禁用no-undef规则:

endpoints: /* eslint-disable no-undef */ (builder) => ({
    getCrypto: builder.query({
        query: () => createRequest('/coins')
    })
})

或者针对单个行添加注释:

endpoints: (builder) => ({
    // eslint-disable-next-line no-undef
    getCrypto: builder.query({
        query: () => createRequest('/coins')
    })
})

方案3:全局声明builder变量(不推荐)

在ESLint配置文件中声明builder为只读全局变量,让ESLint忽略它的未定义检查:

module.exports = {
  globals: {
    builder: 'readonly'
  }
}

此方法不够精准,可能会屏蔽其他场景下的真实未定义错误,仅作为临时替代方案。

验证代码

确认你的代码本身没有语法错误,当前代码的endpoints函数参数拼写正确,无需修改代码逻辑:

export const cryptoApi = createApi({
    reducerPath: 'cryptoApi',
    baseQuery: fetchBaseQuery({ baseUrl }),
    endpoints: (builder) => ({
        getCrypto: builder.query({
            query: () => createRequest('/coins')
        })
    })
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:00:17