uni-app 加急 app端无法正常请求数据,但是h5端可以正常请求

uni-app 加急 app端无法正常请求数据,但是h5端可以正常请求

示例代码:

Unhandled promise rejectionTypeError: Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.

操作步骤:

使用uniapp打包app端至手机,

预期结果:

打包至手机正常测试使用

实际结果:

打app端至手机后,当调用接口时会报错,致使app无法正常渲染数据

bug描述:

uniapp 打包为app端的时候,云打包与基座均无法正常调用接口发送请求,而打包为h5端时,则可以正常调用接口渲染数据

图片

image

开发环境 版本号 项目创建方式
Windows Windows 10 HBuilderX
Android Android 11
三星 S20

更多关于uni-app 加急 app端无法正常请求数据,但是h5端可以正常请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 加急 app端无法正常请求数据,但是h5端可以正常请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的APP端网络请求兼容性问题。从错误信息来看,问题出现在解构非可迭代对象时,这通常与异步请求的返回数据处理有关。

可能的原因和解决方案:

  1. 网络权限配置manifest.json 中确保已配置网络访问权限:

    "app-plus": {
      "distribute": {
        "android": {
          "permissions": [
            "<uses-permission android:name=\"android.permission.INTERNET\"/>"
          ]
        }
      }
    }
    
  2. 请求库兼容性 检查使用的请求库(uni.request、axios等)在APP端的兼容性。建议使用uni-app内置的 uni.request

    uni.request({
      url: 'your-api-url',
      success: (res) => {
        // 避免直接解构,先验证数据类型
        if (Array.isArray(res.data)) {
          const [data] = res.data;
        }
      }
    });
    
  3. 数据验证处理 在解构前添加类型检查:

    // 避免:const [data] = response;
    // 改为:
    if (response && Array.isArray(response)) {
      const [data] = response;
    } else {
      console.error('Invalid response format:', response);
    }
    
  4. 平台条件编译 针对不同平台使用不同处理逻辑:

    #ifdef APP-PLUS
    // APP端特殊处理
    #endif
回到顶部