uni-datetime-picker组件在uni-app中运行到支付宝小程序打不开
uni-datetime-picker组件在uni-app中运行到支付宝小程序打不开
操作步骤:
复现步骤
uniapp项目表单里添加一个时间日期选择组件,运行到支付宝小程序,点击时间组件会提示错误。
预期结果:
点击正常弹出组件。
实际结果:
不弹出组件,会报错。
bug描述:
uni-datetime-picker组件运行到支付宝小程序打不开。 支付宝小程序点击时间日期组件提示:Cannot read property ‘toLowerCase’ of undefined at Proxy.platform (uni-datetime-picker.js:304)。 源码处打印navigator信息,打印出的信息里面userAgent没有数据,但是在源码处使用了userAgent.toLowerCase()导致报错,拉不起来组件。
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/小程序/阿里 |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | window 10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.8.7 |
第三方开发者工具版本号 | 3.0.2 |
基础库版本号 | 2.7.12 |
项目创建方式 | HBuilderX |
更多关于uni-datetime-picker组件在uni-app中运行到支付宝小程序打不开的实战教程也可以访问 https://www.itying.com/category-93-b0.html
确实有问题,需要你在uni-datetime-picker.vue组件中,在454行将
this.isPhone = navigator.userAgent.toLowerCase().indexOf(‘mobile’) !== -1
改成
if(this.isPhone){
this.isPhone = navigator.userAgent.toLowerCase().indexOf(‘mobile’) !== -1
return
}else{
return
}
更多关于uni-datetime-picker组件在uni-app中运行到支付宝小程序打不开的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题的原因是支付宝小程序环境下navigator.userAgent
未定义,而uni-datetime-picker
组件内部直接调用了toLowerCase()
方法导致报错。
解决方案有两种:
- 临时方案:在
onLoad
中手动设置navigator.userAgent
onLoad() {
if(typeof navigator.userAgent === 'undefined') {
navigator.userAgent = 'alipay';
}
}
- 推荐方案:升级
uni-datetime-picker
组件到最新版本,官方已修复此问题。可以通过以下命令更新:
npm update [@dcloudio](/user/dcloudio)/uni-ui