任一忠
任一忠
  • 发布:2022-09-26 16:57
  • 更新:2022-10-01 17:28
  • 阅读:405

打包安卓APP,使用 uni.setStorageSync('key','value') 当value是中文且大于10位 且 在某个页面的onload调用获取会报错 导致整个页面停止!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 19043.2006

HBuilderX类型: 正式

HBuilderX版本号: 3.6.3

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: redmi note9pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.setStorageSync('xxx', '超过十位中文超过十位中超过十位中文超过十位中文超过十位中文文') uni.getStorageSync('xxx')

操作步骤:

uni.setStorageSync('xxx', '超过十位中文超过十位中超过十位中文超过十位中文超过十位中文文') uni.getStorageSync('xxx')

预期结果:

正常获取并输出本地存储的内容

实际结果:

会报错,导致整个页面生命周期停止运行

bug描述:

uni.setStorageSync('xxx', '超过十位中文超过十位中超过十位中文超过十位中文超过十位中文文')

某个页面的onload 获取

uni.getStorageSync('xxx')

会报错,导致整个页面生命周期停止运行

2022-09-26 16:57 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

帮助排查: 红米手机,andorid11,没有出现这个情况,能正常获取

牛牛2021

牛牛2021

确实有这个问题

xmy

xmy

我也有这个问题

a***@qq.com

a***@qq.com

问题+1,
解决方法:缓存时将中文转码,取出来时解码
localData(k,v){
if(v === undefined){
return decodeURI(uni.getStorageSync(k));
}
else if(v === null){
uni.removeStorage({
key: k,
fail(){
uni.showModal({
content: '删除本地数据失败',
});
}
});
}
else {
uni.setStorage({
key: k,
data: encodeURI(v),
fail(e){
console.log(e)
uni.showModal({
content: '本地数据设置失败,请检测storage存储',
});
}
});
}
},

王彦祖

王彦祖 - 90后

上个版本的HBuilderX 还没有这个问题,最近更新了出现了这个问题,希望官方加急修复下

  • 牛牛2021

    是的,记得之前是OK的

    2022-09-30 14:44

l***@163.com

l***@163.com

我也一样,打包以后运行到华为手机上就报错,然后进程卡死,页面卡死

  • l***@163.com

    裂开了,国庆还在公司加班

    2022-10-01 17:28

该问题目前已经被锁定, 无法添加新回复