Typescript axios请求类型不存在

发布于 2022-09-12 02:00:38 字数 1942 浏览 12 评论 0

image.png

上面是报错信息,下面是相关代码:

//pages/index.tsx

 useEffect(() => {
    API.get('/login', {
      params: {
        token: ''
      }
    })
  }, [])
//api/index.ts

import axios, { AxiosInstance } from "axios";
import {
  cacheAdapterEnhancer,
  throttleAdapterEnhancer
} from "axios-extensions";
import getConfig from "next/config";

const {
  publicRuntimeConfig: { API_TIMEOUT_INTERVAL, BASE_URL }
} = getConfig();

const instanceDesign = axios.create({
  baseURL: BASE_URL,
  headers: { "Cache-Control": "no-cache" },
  adapter: throttleAdapterEnhancer(
    cacheAdapterEnhancer(axios.defaults.adapter, {
      enabledByDefault: false,
      cacheFlag: "useCache"
    })
  ),
  timeout: API_TIMEOUT_INTERVAL
});

function interceptors(instance: AxiosInstance) {
  // 添加请求拦截器
  instance.interceptors.request.use(
    function(config) {
      // 在发送请求之前做些什么
      return config;
    },
    function(error) {
      // 对请求错误做些什么
      return Promise.reject(error);
    }
  );

  // 添加响应拦截器
  instance.interceptors.response.use(
    function(response) {
      // 对响应数据做点什么
      return response;
    },
    function(error) {
      // 对响应错误做点什么
      return Promise.reject(error);
    }
  );
}

const API = interceptors(instanceDesign);
export default API;
//typings/axios.d.ts

import * as axios from "axios";

declare module "axios" {
  export interface AxiosInstance {
    CancelToken: any;
    get<T = any>(
      url: string,
      config?: AxiosRequestConfig & { useCache: boolean }
    ): Promise<T>;
    post<T = any>(
      url: string,
      data?: any,
      config?: AxiosRequestConfig
    ): Promise<T>;
  }

  // https://github.com/axios/axios/issues/1510
  export interface AxiosResponse<T> {
    result?: boolean;
    message?: string;
    data?: T;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

穿越时光隧道 2022-09-19 02:00:38
const API = interceptors(instanceDesign);

可你的 interceptors 压根都没有返回值,可不就是 void 么。我猜你应该返回 return instance;

随心而道 2022-09-19 02:00:38

这个 API 应该是 axios 的实例,你的拦截器里没有返回这个实例,也就是 instance

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文