uni-app 编译到钉钉小程序时调用uni.getStorageSync接口获取未存储过的key会报错"查无此key"
uni-app 编译到钉钉小程序时调用uni.getStorageSync接口获取未存储过的key会报错"查无此key"
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | CLI |
示例代码:
function getStorageSync (key) {
const result = my.getStorageSync({
key
});
// 支付宝平台会返回一个 success 值,但是目前测试的结果这个始终是 true。当没有存储数据的时候,其它平台会返回空字符串。
return result.data !== null ? result.data : ''
}
希望可以增加try…catch捕获相应的报错,避免影响前端渲染:
function getStorageSync (key) {
let result = { data: null }
try {
result = my.getStorageSync({
key
})
} catch (error) {
}
// 支付宝平台会返回一个 success 值,但是目前测试的结果这个始终是 true。当没有存储数据的时候,其它平台会返回空字符串。
return result.data !== null ? result.data : ''
}
操作步骤:
uni.getStorageSync({key:"test"})
预期结果:
返回null
实际结果:
报错,查无此key
更多关于uni-app 编译到钉钉小程序时调用uni.getStorageSync接口获取未存储过的key会报错"查无此key"的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 编译到钉钉小程序时调用uni.getStorageSync接口获取未存储过的key会报错"查无此key"的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app中,uni.getStorageSync接口在不同小程序平台的行为确实存在差异。钉钉小程序(基于支付宝小程序运行时)在调用my.getStorageSync获取未存储的key时会抛出"查无此key"的错误,这与微信小程序等平台返回空值的行为不同。
你提供的try-catch封装方案是正确的处理方式。不过可以进一步优化,确保在所有情况下都返回一致的值:
function getStorageSync(key) {
try {
const result = my.getStorageSync({ key });
// 钉钉小程序成功时返回 { data: value } 结构
return result.data !== undefined ? result.data : '';
} catch (error) {
// 捕获"查无此key"等错误,返回空字符串
return '';
}
}
对于uni-app项目,建议在条件编译中统一处理这种平台差异:
// #ifdef MP-DD
function getStorageSync(key) {
try {
const result = my.getStorageSync({ key });
return result.data !== undefined ? result.data : '';
} catch {
return '';
}
}
// #endif
// #ifndef MP-DD
// 其他平台使用原生uni.getStorageSync
// #endif

