Typescript axios请求类型不存在
上面是报错信息,下面是相关代码:
//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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可你的
interceptors
压根都没有返回值,可不就是void
么。我猜你应该返回return instance;
?这个 API 应该是 axios 的实例,你的拦截器里没有返回这个实例,也就是
instance