我有一个现有的ExtJS应用程序,我要从4.x升级到6.2.0。我有一个简单的存储提供程序设置器,我将其传递到我的Ext.onReady()块中,如下所示:
Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider',{}));当我切换到6.2.0时,我会得到以下错误:
ext-all-rtl-debug.js:9389 [E] Ext.util.LocalStorage.constructor(): Cannot create duplicate instance of local store "ext". Use Ext.util.LocalStorage.get() to share instances.所以我必须做的,我认为是修复的,是这样的:
Ext.state.Manager.setProvider(Ext.util.LocalStorage.get('id'));
不过,我在这里担心的是,我只是将创可贴应用到问题上,而不是真正地解决问题。我没有在其他任何地方显式地设置提供程序,我所做的就是将ExtJS库从4.x换到6.2.0以获得该错误。如果它是在6.2.0初始化过程中首先在其他地方创建的,那么就像前面提到的,我得到了一个duplicate错误。
6.2.0中的哪些更改导致了此行为?现在是否设置了两个提供程序,一个由ExtJS设置,另一个使用我的客户端代码设置?有没有一种更干净的方式来处理这个问题?
发布于 2016-10-17 00:13:18
此错误的前提条件在ExtJS 4和ExtJS 6中是相同的。相应的文件没有更改:请比较ExtJS 4.2.4 version和ExtJS 6.2.0 version。
因此,您的应用程序必须对此负责。在(升级后的)代码中的某处,必须创建一个Ext.util.LocalStorage实例。因为这个错误是在ID已经注册并且注册只在Ext.util.LocalStorage类的构造函数中完成的情况下抛出的,所以我建议在那里设置一个断点来检查堆栈跟踪哪个函数调用了构造函数方法。
https://stackoverflow.com/questions/39799719
复制相似问题