HarmonyOS 鸿蒙Next 接口请求报错Cannot store property of null or undefined

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

HarmonyOS 鸿蒙Next 接口请求报错Cannot store property of null or undefined
接口封装get方法如下:

get<T>(url: string, param: object | null, type: string): Promise<ResponseResult<T>> {
    let uri = WebUtils.getParam(url);
    let uriMap = uri.queryMap;
    uriMap.forEach((value, key) => {
        this.map.set(key, value);
    })
    params_type = type;
    const errorData = [] as T;
    let serverData: ResponseResult<T> = new ResponseResult(errorData);

    return apiClient.get(url, { params: param })
        .then((response: AxiosResponse) => {
            serverData = response.data;
            return serverData;
        })
        .catch((error: AxiosError) => {
            serverData.errmsg = error.message;
            return serverData;
        })
}

export class ResponseResult<T>{

/**
 * Code returned by the network request: success, fail.
 */
errno: number;

/**
 * Message returned by the network request.
 */
errmsg: string | Resource;

/**
 * Data returned by the network request.
 */
data: T;

constructor(data:T) {
    this.errno = -1;
    this.errmsg = '';
    this.data = data;
}

}

调用如下:

logout(): Promise<ResponseResult<User>> {
    return new Promise((resolve: Function) => {
        let url = `${NetConstant.LOGIN_OUT}`;
        let request = new NewRequest(NetConstant.BASE_URL_TYPE1);
        request.requestUse();
        request.get<User>(url, null, CommonConstants.TYPE_USER).then((data: ResponseResult<User>) => {

        })
    })
}

因为接口返回结果是:

{
    "errno": 0,
    "errmsg": "退出成功"
}

导致出现了如下报错Cannot store property of null or undefined

如何修改


更多关于HarmonyOS 鸿蒙Next 接口请求报错Cannot store property of null or undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

修改get<T>(url: string, type: string, param?: object)

更多关于HarmonyOS 鸿蒙Next 接口请求报错Cannot store property of null or undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS(鸿蒙)系统中Next接口请求报错“Cannot store property of null or undefined”的问题,这通常表明在尝试访问或修改一个空(null)或未定义(undefined)对象的属性时发生了错误。

  1. 检查对象初始化:确保在调用Next接口之前,所有相关的对象都已被正确初始化。如果对象是从函数或方法中返回的,检查该函数或方法是否有可能返回null或undefined。

  2. 代码审查:仔细检查触发错误的代码行,找出哪个对象或属性是null或undefined。可以使用console.log()来打印相关对象的状态,以帮助定位问题。

  3. 异常处理:在访问对象属性之前,添加条件语句来检查对象是否为null或undefined。如果是,可以采取适当的措施,如返回一个默认值或抛出一个更具体的错误。

  4. API文档:查阅HarmonyOS的官方API文档,确认Next接口的使用方法和参数要求,确保没有遗漏或错误地使用API。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。这将帮助你获得更专业的技术支持和解决方案。

回到顶部