uni.setStorageSync('name', '江苏省通州区盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '江苏省南通市盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '商丘市睢阳区高辛镇前七武刘小学')
console.log('name', uni.getStorageSync('name'));
- 发布:2022-10-12 10:19
- 更新:2022-11-21 15:12
- 阅读:1038
【报Bug】使用uni.setStorageSync存储特定格式的字符串,读取的时候会报错SyntaxError: Unexpected string in JSON at position 20
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11专业版10.0.22000
HBuilderX类型: 正式
HBuilderX版本号: 3.6.4
手机系统: Android
手机系统版本号: Android 7.1.1
手机厂商: 模拟器
手机机型: 夜神模拟器
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
uni.setStorageSync('name', '江苏省通州区盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '江苏省南通市盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '商丘市睢阳区高辛镇前七武刘小学')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '江苏省通州区盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '江苏省南通市盛发科技园')
console.log('name', uni.getStorageSync('name'));
uni.setStorageSync('name', '商丘市睢阳区高辛镇前七武刘小学')
console.log('name', uni.getStorageSync('name'));
预期结果:
正常返回存储的字符串
正常返回存储的字符串
实际结果:
[Vue warn]: Error in onLoad hook: "SyntaxError: Unexpected token e in JSON at position 24"
SyntaxError: Unexpected token e in JSON at position 24
[Vue warn]: Error in onLoad hook: "SyntaxError: Unexpected token e in JSON at position 24"
SyntaxError: Unexpected token e in JSON at position 24
bug描述:
使用数据缓存存储字符串,读取的时候(APP)端会报错
uni.setStorageSync('name', '江苏省通州区盛发科技园')
console.log('name', uni.getStorageSync('name'));
这种就会报错,示例中还举了几个例子,只要字符串里面加个别的字符就能正常读取,离奇的bug
8 个回复
最佳回复
DCloud_Android_DQQ
HBuilderX 3.6.8.20221027-alpha 问题已修复
DCloud_Android_DQQ
尝试用夜神 也没复现问题。 能否提供一个示例
m***@qq.com (作者)
158896069
2022-10-13 15:05
m***@qq.com (作者)
案例反馈里有
2022-10-13 15:05
1208net
我也遇到这个问题了
DCloud_Android_DQQ
我正在尝试复现这个问题。 方不方便留个QQ
1208net
这个问题相当严重,希望尽快核实解决。uni.getStorageSync() 存储的是长字符串的话比较容易复现
1***@qq.com
刚刚也遇到了这个问题,目前还不清楚是不是uni.getStorageSync() 这个方法是否已经不支持直接存字符串,我是把存储的值装到对象中再存,这样就不会报错了,如下:
const data = { name: "张三" }
uni.getStorageSync( 'info', data )
2022-10-21 16:02
northDeng
回复 1***@qq.com: 这样也会有问题,对象中存储的字符串可能包含特殊字符就会出现报错,ecode转一下就又好了,临时解决
2022-11-07 12:56
有智慧的码农
这个问题特别严重,我已经换回3.5.3了
1208net
这个BUG 还没确认吗
4***@qq.com
先退回3.5.3用吧 说是3.6.8.alpha 修复了,那个版本也一堆bug
2022-10-28 14:46
负韶华
我编辑器是3.6.4 现在安卓也出现了这种问题 请问是不是一个情况 回退版本可以解决吗