uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问
uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10专业版 64位 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.22 |
| 手机系统 | Android |
| 手机系统版本号 | Android 8.1 |
| 手机厂商 | 小米 |
| 手机机型 | 小米6X |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
1
预期结果:
2
实际结果:
3
bug描述:
代码和报错看附件吧 超简单, 我仔细去翻了翻官方文档,这里也没有说这个key有次数限制呀, 难道是uniapp的高德key那里有限制?

更多关于uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个报错是uni-app的chooseLocation组件在高德地图SDK返回地址信息后,触发的JavaScript异常。从截图看,错误发生在解析地址数据时,具体是addressComponent对象为null或undefined导致的属性访问错误。
关键点分析:
- 问题根源:高德地图在某些情况下返回的地址数据中,
addressComponent字段可能为空,而代码直接访问了addressComponent.city等子属性。 - 不影响使用的原因:虽然控制台报错,但主要地址信息(如name、address)已正常返回,应用功能未受影响。
- 与key限制无关:这不是高德key调用次数限制问题,而是数据解析时的容错处理缺失。
建议修复方案: 在调用chooseLocation后,对返回结果进行安全判断:
uni.chooseLocation({
success: (res) => {
if (res && res.addressComponent) {
// 安全访问addressComponent的子属性
const city = res.addressComponent.city || ''
// ...其他处理
}
// 即使addressComponent为空,仍可正常使用res.name、res.address等主字段
}
})

