uni-app fast模式不支持uni.getStorageSync
uni-app fast模式不支持uni.getStorageSync
问题描述
在NVUE界面不支持uni.getStorageSync
onLoad() {
console.log(uni.getStorageSync("token"));
},
编译器版本:2.6.4(v3)直接报错
11:30:41.055 [JS Framework] Failed to find taskCenter (1).
11:30:41.076 TypeError: plus.weexBridge.execSync is not a function. (In ‘plus.weexBridge.execSync(T.stringify(args),“pdr:”+T.stringify([service,action,!1]))’, ‘plus.weexBridge.execSync’ is null)
解决了 原来不支持同步方法
验证没有问题,请提供一个简单工程
onLoad() {
uni.setStorageSync(‘token’, ‘hello’)
var token = uni.getStorageSync(“token”)
console.log(token);
}
bug 确认,已经加分,后续修复
HX2.6.5 v3编译 fast模式 在App.vue里使用uni.setStorageSync(‘test’, ‘test’);也是报同样的错误
回复 chenli: 已知,近期更新将修复
HX2.6.5 v3编译 fast模式 在App.vue里使用uni.setStorageSync(‘test’, ‘test’);也是报同样的错误
HBuilderX 2.6.6+ 已修复
请问下为什么我2.9.3版本的,使用ipad运行也报TypeError: uni.getStorageSync is not a function?
使用小程序跑没事,用ipad测的时候就报这个
Failed to find taskCenter (4)这个错误又出现了
在uni-app的开发过程中,uni.getStorageSync
是一个常用的API,用于同步获取本地存储中的数据。然而,在uni-app的fast模式下,这个同步API是不被支持的。fast模式是为了提高热重载速度和小程序性能而设计的一种模式,它限制了某些同步API的使用,包括 uni.getStorageSync
。
为了解决这个问题,你可以使用异步的 uni.getStorage
API 来替代 uni.getStorageSync
。下面是一个简单的代码示例,展示了如何在fast模式下使用异步API来获取本地存储的数据。
示例代码
假设你有一个页面,需要在页面加载时获取本地存储中的用户信息。
1. 使用同步API(在fast模式下会报错)
// 假设这是错误的做法,因为fast模式不支持
try {
const userInfo = uni.getStorageSync('userInfo');
console.log('用户信息:', userInfo);
} catch (e) {
console.error('获取本地存储失败:', e);
}
2. 使用异步API(正确做法)
// 页面加载时获取本地存储的用户信息
Page({
data: {
userInfo: {}
},
onLoad() {
// 使用uni.getStorage异步获取用户信息
uni.getStorage({
key: 'userInfo',
success: (res) => {
this.setData({
userInfo: res.data
});
console.log('用户信息:', this.data.userInfo);
},
fail: (err) => {
console.error('获取本地存储失败:', err);
}
});
}
});
在这个示例中,我们使用了 uni.getStorage
来异步获取本地存储中的 userInfo
。通过 success
回调函数,我们可以在获取到数据后更新页面的数据,并在控制台打印出来。如果获取失败,则会在 fail
回调函数中打印错误信息。
注意事项
- 在使用异步API时,需要确保你的逻辑能够正确处理异步操作的结果,避免因为异步操作未完成而导致的错误。
- 如果你的应用中有多处需要获取本地存储的数据,建议封装一个统一的函数来处理这些操作,以提高代码的可维护性和可读性。
- 在开发过程中,注意检查uni-app的官方文档,了解不同模式下API的支持情况,以避免因为API不支持而导致的开发问题。
通过上述方式,你可以在uni-app的fast模式下安全地获取本地存储的数据,而不会因为使用不支持的同步API而导致问题。