报Property 'content' does not exist on type 'AxiosResponse<any>'

vue的axios请求返回值调取时报下面这错误

Property 'content' does not exist on type 'AxiosResponse<any>'.Vetur(2339)

import axios from "axios"
import { AxiosResponse, AxiosRequestConfig } from 'axios';
import { baseUrl } from "./config";
import Router from "../router"
import { Notify } from "vant";
import { removeToken } from "./auth";

const service = axios.create({
  baseURL: baseUrl.api,
  timeout: 50000, // request timeout
  withCredentials: true // 允许携带cookie
})

service.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    // // Do something before request is sent
    // if (store.getters.token) {
    //   // 让每个请求携带token-- ["X-Token"]为自定义key 请根据实际情况自行修改
    // config.headers.token = "weoruiwer-werhjlwejri-vldmfv"
    // }
    config.withCredentials = true
    return config
  },
  error => {
    Promise.reject(error)
  }
)
 
// response interceptor
service.interceptors.response.use(
  // response => response,
  /**
   * 下面的注释为通过在response里,自定义code来标示请求状态
   * 当code返回如下情况则说明权限有问题,登出并返回到登录页
   * 如想通过 xmlhttprequest 来状态码标识 逻辑可写在下面error中
   * 以下代码均为样例,请结合自生需求加以修改,若不需要,则可删除
   */
  (res:AxiosResponse) => {
    const data = res.data

    if (data.code !== 0) {
      if (data.code === 1000) {
        // console.log("账号或密码错误")

        Notify({ type: "danger", message: "账号或密码错误" });
      } else {
        Notify({ type: "danger", message: data.msg });
        removeToken()
        // Router.push("/login")
      }

      return Promise.reject(data)
    } else {
      return res.data
    }
  },
  error => {
    console.warn("err" + error); // for debug
    Notify({ type: "danger", message: "网络连接错误" });
    return Promise.reject(error);
  }
);

export default service;

调用时显示类型错误,
image.png

阅读 23k
3 个回答

解决方法是新增一个 axios.d.ts 文件,内容如下

import * as axios from 'axios'

declare module 'axios' {
  interface AxiosInstance {
    (config: AxiosRequestConfig): Promise<any>
  }
}

就可以解决了
来自https://xn--nf1a578axkh.xn--f...

新手上路,请多包涵
await this.httpService.get(url).toPromise();

toPomise() 可以省去定义interface

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题