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

在Kubb中配置TanStack Query v5基础URL的问题咨询

Kubb + TanStack Query v5:自定义queryFn不执行及BaseURL配置问题

核心问题分析

你的全局queryFn没执行,是因为Kubb生成的TanStack Query钩子已经内置了专属的请求逻辑,优先级高于你在QueryClient默认配置里定义的全局queryFn,所以你的console.log根本不会触发。

另外,新版Kubb确实移除了旧版的baseURL配置项,得换正确的方式配置接口地址。


1. 正确配置BaseURL(解决localhost 404问题)

直接在Kubb配置文件里通过插件关联你的Axios实例,让生成的钩子自动使用带目标BaseURL的请求工具:

// kubb.config.ts
import { defineConfig } from '@kubb/core'
import { pluginTanstackQuery } from '@kubb/plugin-tanstack-query'
import { pluginAxios } from '@kubb/plugin-axios'

export default defineConfig({
  input: './你的接口文档.yaml',
  output: {
    path: './src/api',
  },
  plugins: [
    pluginAxios({
      output: {
        path: 'axiosInstance.ts',
      },
      // 直接在这里配置目标BaseURL
      baseURL: 'https://base.url.com',
    }),
    pluginTanstackQuery({
      output: {
        path: 'queries',
      },
      // 让TanStack Query插件使用上面生成的Axios实例
      axiosInstance: {
        import: {
          path: '../axiosInstance.ts',
          name: 'axiosInstance',
        },
      },
    }),
  ],
})

这样生成的所有查询钩子都会自动用配置好的BaseURL发起请求,不会再指向localhost。

如果你已经有现成的Axios实例文件,也可以跳过pluginAxios的baseURL配置,直接在axiosInstance.import里指定你自己的实例路径即可。


2. 全局queryFn不生效的替代方案

既然Kubb生成的钩子自带queryFn,全局配置优先级不够,要统一处理请求逻辑,推荐用Axios拦截器而非全局queryFn:

// api/client.js
import axios from "axios";

const axiosInstance = axios.create({
    baseURL: "https://base.url.com",
    timeout: 15000
});

// 在这里统一处理请求逻辑,比如加token、打印日志
axiosInstance.interceptors.request.use(
  (config) => {
    console.log('请求路径:', config.url);
    config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
    return config;
  },
  (error) => Promise.reject(error)
);

export default axiosInstance;

然后在Kubb配置里导入这个实例,生成的钩子就会自动复用拦截器逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:05:02