2016-09-30 7 views
1

4.x에서 6.2.0으로 업그레이드 할 기존 ExtJS 응용 프로그램이 있습니다. 나는처럼 보이는 내 Ext.onReady() 블록으로 통과 간단한 스토리지 제공 업체 세터를 가지고 다음과 같은 : 그래서6.2에서 ExtJS Ext.state.Manager.setProvider() 동작 4.x에서

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. 

: 나는 6.2.0로 스왑 할 때

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

, 나는 오류를 얻을 것 난 그냥 문제에 대한 미봉책을 적용하고있어 것입니다하지만 여기

Ext.state.Manager.setProvider(Ext.util.LocalStorage.get('id'));

내 문제 : 나는 내가 생각하는 것은 수정하고,에해야 할 일을했을 것을, 다음이었다 진정한 해결 방법은 없습니다. 내가 명시 적으로 다른 곳에서 공급자를 설정하지는 않았지만, 내가했던 모든 것은 ExtJS lib를 4.x에서 6.2.0으로 바꿔서 그 오류를 얻었습니다. 그것은 마치 6.2.0 초기화 프로세스에서 처음으로 다른 곳에서 만들어졌고 지금은 앞에서와 같이 duplicate 오류가 발생합니다.

6.2.0에서 변경된 사항은 무엇입니까? 현재 ExtJS와 클라이언트 코드가 설정된 두 개의 공급자가 있습니까? 이것을 처리하는 더 깨끗한 방법이 있습니까?

+0

먼저 공급자를 설정하는 위치를 추적합니다. 'Ext.util.LocalStorage.cache'에 ID를 설정하는 곳에 중단 점을 넣으십시오. –

+0

예를 들어 [바이올린에서] (https://fiddle.sencha.com/) 할 수 있습니까? – madreason

+0

u가 init 단계에서 문서에 설명 된 것처럼 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 클래스의 생성자에서만 수행되는 경우이 오류가 발생하므로 스택 추적에서 해당 함수가 생성자 메서드를 호출하는지 확인하기 위해 중단 점을 설정하는 것이 좋습니다.