uni-app uni.chooseLocation选择地图没有显示地址列表但是也可以定位的同时还报了错

uni-app uni.chooseLocation选择地图没有显示地址列表但是也可以定位的同时还报了错

开发环境 版本号 项目创建方式
Windows 7.0.0.168 HBuilderX

操作步骤:

  • 就点击,然后调用uni.chooseLocation就报错了

预期结果:

  • 应该点击之后,能够获取到选择的地图位置

实际结果:

  • 点击之后,无法拿到周边的位置

bug描述:

uni.chooseLocation选择地图没有显示地址列表,但是也可以定位的,同时,还报了错,是nvue和vue混用的项目,但是只有一个nvue文件,同时nvue页面编译模式是uni-app,hbuilderx的版本是4.85,高德的key和用户名也没问题,同时调用的用量也很多

uni.chooseLocation({
    success: function(res) {
        console.log('res', res)
    },  
    fail: function(err) {  
        console.log(err)  
    }  
});

报的错是:

10:45:40.258 [JS Framework] Failed to execute the callback function: 
TypeError: Cannot read property 'pageIndex' of null
10:45:40.261 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property 'pageIndex' of null
at  (/__uniappchooselocation.js.nvue:32:16971)

更多关于uni-app uni.chooseLocation选择地图没有显示地址列表但是也可以定位的同时还报了错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

17 回复

该bug反馈内容基本完整但关键细节缺失。BUG描述说明了现象(地图无地址列表但可定位)及错误信息(‘pageIndex’ of null),但未提供manifest中地图配置详情、具体调用场景及高德key权限配置情况。代码示例过于简略,缺少manifest配置和完整上下文,无法直接复现。复现步骤仅"点击调用",缺乏操作细节。预期结果合理,实际结果异常,非误报。
经核查知识库,该问题成立且与已知限制相关:

知识库明确指出App平台需配置地图厂商key并确保周边服务权限,用户虽称key正常,但未验证是否开启周边搜索API权限
nvue页面仅支持高德地图,且需特别注意manifest配置
错误"pageIndex of null"表明返回数据结构异常,通常因权限不足或配置错误导致数据为空

用户使用HBuilderX 4.85(高于要求的4.24版),排除版本兼容问题。核心问题在于:

未确认高德控制台是否开通"周边搜索"权限
manifest.json中可能未正确配置高德key或安全域名
nvue页面调用时可能存在特殊限制

建议用户:

检查高德开放平台控制台确认已开通"周边搜索"API权限
核对manifest.json中App SDK配置是否填写正确高德key
参考地图组件文档确认nvue页面使用规范
尝试在纯vue页面测试以排除nvue兼容性问题 内容为 AI 生成,仅供参考

更多关于uni-app uni.chooseLocation选择地图没有显示地址列表但是也可以定位的同时还报了错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


检查高德开放平台控制台确认已开通"周边搜索"API权限:这个高德的安卓没有周边搜索API,只有web的才有 核对manifest.json中App SDK配置是否填写正确高德key:这个我已经截图放在附件了,是正确的 参考地图组件文档确认nvue页面使用规范:该页面并不是nvue页面,nvue页面并没有使用这个api,两者命名也不同

附件没看到,是不是没有选择插入

回复 蔡cai:应该是?我直接复制出来吧 “maps” : { “amap” : { “name” : “amapK”, “appkey_ios” : “00ac7688c39b10”, “appkey_android” : “7d1faa59e8f68f” } }信息我截了一半,这个我核对过高德后台的信息,是没错的

去掉了nvue文件之后,还是报这个 [JS Framework] Failed to execute the callback function: TypeError: Cannot read property ‘pageIndex’ of null 11:31:11.336 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘pageIndex’ of null at (/__uniappchooselocation.js.nvue:32:16971) 11:31:11.642 [JS Framework] Failed to execute the callback function: TypeError: Cannot read property ‘pageIndex’ of null

有用到pageIndex这个字段嘛

回复 蔡cai: 没有呢,这个应该是uni.chooseLocation这个api里封装的

回复 3***@qq.com: 好的

回复 蔡cai: 嗯嗯

回复 3***@qq.com: 我试了下,正常的;你打包的包名、签名,与高德的配置一致嘛

回复 蔡cai: 我看看

“maps” : { “amap” : { “name” : “amapK”, “appkey_ios” : “00ac7688c39b10”, “appkey_android” : “7d1faa59e8f68f” } }信息我截了一半,这个我核对过高德后台的信息,是没错的

你这个问题解决了吗。你这个报错一般来说是 key 配置的不对,搜索附近数据时候报错了

没有解决,key是没问题的,我核对了高德的key

回复 3***@qq.com: 提供复现工程并说明操作步骤

您好,解决了嘛?我现在也有这样的问题,key值、用户名都是正确的,还是会报[JS Framework] Failed to execute the callback function: TypeError: Cannot read property ‘pageIndex’ of null

这是一个典型的 uni.chooseLocation 在 nvue 页面中调用时,因底层渲染引擎差异导致的兼容性问题。

核心原因:nvue 页面使用的是原生渲染引擎(如 Weex),而 uni.chooseLocation 在某些版本或特定环境下,其内部 JS 桥接逻辑与 nvue 的原生页面栈管理机制存在冲突。错误信息 Cannot read property 'pageIndex' of null 直接指向了 nvue 页面实例(或页面栈上下文)获取失败。

解决方案

  1. 临时规避方案:在调用 uni.chooseLocation 前,添加一个极短的延时(例如 100ms),确保 nvue 页面上下文完全就绪。
    setTimeout(() => {
        uni.chooseLocation({
            success: function(res) {
                console.log('res', res);
            },
            fail: function(err) {
                console.log(err);
            }
        });
    }, 100);
回到顶部