报Property 'content' does not exist on type 'AxiosResponse'

发布于 2022-09-12 01:28:26 字数 1839 浏览 12 评论 0

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

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

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

发布评论

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

评论(3

森林散布 2022-09-19 01:28:26

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

import * as axios from 'axios'

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

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

我的奇迹 2022-09-19 01:28:26
await this.httpService.get(url).toPromise();

toPomise() 可以省去定义interface

飘然心甜 2022-09-19 01:28:26

好家伙 我也遇到了,但不知道原理是什么,为啥那样加就可以解决问题?

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