2016-09-30 7 views
1

私は4.xから6.2.0にアップグレードする既存のExtJSアプリケーションを持っています。私は6.2.0にスワップすると、私はエラーを取得したい6.2対4.xのExtJS Ext.state.Manager.setProvider()の動作

Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider',{})); 

:私は、私は次のようになります。私のExt.onReady()ブロックに渡すシンプルなストレージプロバイダセッターを持っていたので、

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'));

私の関心:私は私が考えることは修正され、にしなければならなかったものを、次のようでした本当の修正を行っているわけではありません。私はプロバイダを明示的に設定していません.ExJS libを4.xから6.2.0に置き換えてそのエラーを取得しました。それは6.2.0初期化プロセスの最初のどこかで作成されたもので、今は前述のようにduplicateエラーが発生しています。

6.2.0で何が変更されましたか?現在、ExtJSとクライアントコードの2つのプロバイダが設定されていますか?これをよりきれいに処理する方法はありますか?

+0

私は最初にプロバイダーを設定している場所をトレースしたいと思います。 'Ext.util.LocalStorage.cache'でIDを設定しているところにブレークポイントを置きます。 –

+0

あなたは[フィドルで](https://fiddle.sencha.com/)の例を作ることができますか? – madreason

+0

初期段階で、ドキュメントに書かれているように、setterを入れようとしましたか? (extが用意されていない場合は不可)http://docs.sencha.com/extjs/6.2.0/classic/Ext.state.Manager.html – devbnz

答えて

2

このエラーの前提条件は、ExtJS 4とExtJS 6で同じです。対応するファイルは変更されていません:ExtJS 4.2.4 versionExtJS 6.2.0 versionを比較してください。

このため、アプリケーションがこれに責任を負う必要があります。あなたの(アップグレードされた)コードのどこかに、Ext.util.LocalStorageのインスタンスを作成する必要があります。 IDが既に登録されていて、登録がExt.util.LocalStorageクラスのコンストラクタでのみ行われた場合にこのエラーがスローされるので、コンストラクタメソッドを呼び出すスタックトレースをチェックするためにブレークポイントを設定することをお勧めします。