uni-app uni.chooseLocation 方法报错导致无法搜索地址

uni-app uni.chooseLocation 方法报错导致无法搜索地址

项目属性
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 windows11
HBuilderX类型 正式
HBuilderX版本号 4.76
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 荣耀30pro
页面类型 nvue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.chooseLocation({  
    success: (res) => {  
        this.startLocation.startAddress = res.address  
        this.startLocation.lat = res.latitude  
        this.startLocation.lng = res.longitude  
    }  
})

操作步骤:

<template>  
    <view>  
        <button @click="open">打开地点选择</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  

            }  
        },  
        methods: {  
            open(){  
                uni.chooseLocation({  
                    complete(res) {  
                        console.log(res);  
                    }  
                })  
            }  
        }  
    }  
</script>  

<style>  

</style>  

在该页面,点击“打开地点选择”按钮,正常打开了地图选择地址组件,定位到当前页面,但是地址列表无数据。

预期结果:

页面显示地址列表数据可选择。

实际结果:

无显示,有报错。

bug描述:

uni.chooseLocation 调用该方法后,控制台输出

20:09:15.824 [JS Framework] Failed to execute the callback function:
TypeError: Cannot read property 'pageIndex' of null
20:09:15.824 reportJSException >>>> exception function:<strong>WEEX_CALL_JAVASCRIPT</strong>, exception:JavaScript execute error!Uncaught TypeError: Cannot read property 'pageIndex' of null
at  (/__uniappchooselocation.js.nvue:1:25432)  

导致输入地址搜索地址时,无地址列表可选择。


更多关于uni-app uni.chooseLocation 方法报错导致无法搜索地址的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

升一下,HBuilderX4.81alpha,如果还有问题,提供一个复现工程。

更多关于uni-app uni.chooseLocation 方法报错导致无法搜索地址的实战教程也可以访问 https://www.itying.com/category-93-b0.html


升级到HBuilderX4.81alpha 还是一样的错误,复现工程已上传

回复 h***@163.com: 我补充了两个相关链接,这个可能是配置 key 的问题,按照评论区反馈进行排查

这是一个典型的 uni.chooseLocation 在 nvue 页面中的兼容性问题。从错误信息 Cannot read property 'pageIndex' of null 可以看出,这是 nvue 环境下调用该 API 时内部对象初始化失败导致的。

问题分析:

  1. uni.chooseLocation 在 nvue 页面中可能存在兼容性问题
  2. 错误发生在内部页面索引参数读取时,表明底层组件初始化异常
  3. 虽然地图组件能正常打开,但地址搜索功能因对象未正确初始化而失效

解决方案:

方案一:使用条件编译处理 nvue 兼容性

// #ifdef APP-NVUE
// nvue 页面使用其他定位方案
uni.getLocation({
  type: 'gcj02',
  success: (res) => {
    // 获取坐标后跳转到地图页面或使用其他地址选择方案
  }
})
// #endif

// #ifndef APP-NVUE
// vue 页面正常使用 chooseLocation
uni.chooseLocation({
  success: (res) => {
    this.startLocation.startAddress = res.address
    this.startLocation.lat = res.latitude  
    this.startLocation.lng = res.longitude
  }
})
// #endif
回到顶部