HarmonyOS 鸿蒙Next:网络请求拦截器中return之后跳到error里面,报错target must be an object

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

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)不是一个有效的对象。

请检查以下几点:

  1. 确保return语句之后没有执行到错误的代码路径,特别是不要错误地触发错误处理。
  2. 验证所有涉及的对象(如响应体、请求体等)在使用前已正确初始化且不为nullundefined
  3. 检查是否有库或框架的特定要求或限制,特别是关于错误处理和拦截器的部分。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部