HarmonyOS 鸿蒙Next:网络请求拦截器中return之后跳到error里面,报错target must be an object
HarmonyOS 鸿蒙Next:网络请求拦截器中return之后跳到error里面,报错target must be an object
【关键字】
网络请求拦截器 / return / target must be an object
【问题描述】
网络请求拦截器的关键代码如下:
axiosClient.interceptors.request.use(
async (config: InternalAxiosRequestConfig) => {
config.headers[‘X-APP-PLAT’] = ‘HarmonyOS’;
config.headers[‘X-APP_VERSION’] = BuildProfile.VERSION_CODE.toString();
config.headers[‘deviceCode’] = util.generateRandomUUID();
config.headers[‘deviceType’] = deviceInfo.deviceType;
config.headers[‘deviceName’] = deviceInfo.brand;
config.headers[‘deviceDetail’] = ${deviceInfo.brand}-${deviceInfo.marketName}-${deviceInfo.displayVersion}
;
if (isNeedEncrypt(config.url)) {
let requestId = RandomUtil.randomInt().toString()
let requestData = await encryptData(config.params.toString(), requestId)
config.params = requestData
config.headers[‘X-AUTH-TOKEN’] = ‘******twuEW3CYrNjR4L1CEvZMI38sda1x2gb9yFmKxQlw9wAqnGfVGGxh3ZtkK0’;
config.headers[‘X-AUTH-USERID’] = ‘**634411’;
config.headers[“requestId”] = requestId
return config
} else {
return config
}
}, (error: AxiosError) => {
return Promise.reject(error)
})
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
加密之后,return config 然后就跳到了 error里面了,然后报target must be an object。target must be an object 报错,这个target不清楚是哪里返回出来的。
【解决方案】
关于“网络请求拦截器”的使用,请参考链接:https://gitee.com/openharmony-sig/ohos_axios#%E6%8B%A6%E6%88%AA%E5%99%A8
1 回复
在HarmonyOS开发中,如果你在网络请求拦截器中遇到return
之后跳转到error
处理,并且报错“target must be an object”,这通常表明你尝试调用的方法或访问的属性所在的上下文(target)不是一个有效的对象。
请检查以下几点:
- 确保
return
语句之后没有执行到错误的代码路径,特别是不要错误地触发错误处理。 - 验证所有涉及的对象(如响应体、请求体等)在使用前已正确初始化且不为
null
或undefined
。 - 检查是否有库或框架的特定要求或限制,特别是关于错误处理和拦截器的部分。
如果问题依旧没法解决请加我微信,我的微信是itying888。