封装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或功能无法正常使用。
具体原因可能包括:
- 网络请求权限:鸿蒙Next中网络请求需要配置相应的权限,未正确配置可能导致请求失败。
- 环境差异:axios默认依赖的浏览器或Node.js环境在鸿蒙Next中可能不存在或不同,导致某些功能无法正常执行。
- 模块导入问题:在ets中导入外部模块时,可能需要使用鸿蒙提供的模块加载机制,直接使用import可能导致问题。
解决方法是使用鸿蒙提供的网络请求API(如@ohos.net.http
)替代axios,或对axios进行适配以兼容鸿蒙Next的运行环境。