封装axios后,在ets界面调用就会导致编译器报错 HarmonyOS 鸿蒙Next

封装axios后,在ets界面调用就会导致编译器报错 HarmonyOS 鸿蒙Next 这是编译器错误提示

这是封装的axios

import axios from '@ohos/axios'

// 导出Request类,可以用来自定义传递配置来创建实例
function Http(axiosConfig) {
  const instance = axios.create({
    baseURL: 'http:localhost:8088/api/',
    timeout: 60000,
    headers: {
      'Content-Type': Object.prototype.toString.call(axiosConfig.params) !== '[object FormData]'
        ? "application/x-www-form-urlencoded" : "multipart/form-data"
    }
  });
  //请求拦截
  instance.interceptors.request.use(config => {
    return config
  })
  //响应拦截
  instance.interceptors.response.use(response => {
    return response.data
  }, error => {
    return Promise.reject(error)
  });

  if (Object.prototype.toString.call(axiosConfig.params) === '[object FormData]') {
    return new Promise((resolve, reject) => {
      instance.post(axiosConfig.url, axiosConfig.params).then(
        response => {
          resolve(response.data);
        }
      ).catch(
        err => {
          reject(err)
        }
      )
    })
  }
}
// 默认导出Request实例
export default Http

api集合类

import http from '../pages/utils/http'
export const login = (params) => http({
  url: '/user/getData',
  method: 'post',
  params
})

在界面使用

Button("测试").onClick(() => {
  login({ name: "fda", pad: "fda" }).then(res => {
    console.log(JSON.stringify(res))
  }).catch(err => {
    console.log(err)
  })
})

更多关于封装axios后,在ets界面调用就会导致编译器报错 HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

楼主解决了没,我也遇到了

更多关于封装axios后,在ets界面调用就会导致编译器报错 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我没解决,不过我新建一个项目后它又没报错了,

在HarmonyOS鸿蒙Next中,封装axios并在ets界面调用时导致编译器报错,可能是由于鸿蒙的ets框架与axios的默认配置存在兼容性问题。鸿蒙的ets框架基于TypeScript,而axios是一个基于Promise的HTTP客户端,主要用于浏览器和Node.js环境。在鸿蒙Next中,ets的运行环境与浏览器或Node.js不同,可能导致某些API或功能无法正常使用。

具体原因可能包括:

  1. 网络请求权限:鸿蒙Next中网络请求需要配置相应的权限,未正确配置可能导致请求失败。
  2. 环境差异:axios默认依赖的浏览器或Node.js环境在鸿蒙Next中可能不存在或不同,导致某些功能无法正常执行。
  3. 模块导入问题:在ets中导入外部模块时,可能需要使用鸿蒙提供的模块加载机制,直接使用import可能导致问题。

解决方法是使用鸿蒙提供的网络请求API(如@ohos.net.http)替代axios,或对axios进行适配以兼容鸿蒙Next的运行环境。

回到顶部