2016-07-07 4 views
1

두 개의 jspm 모듈, ModuleA 및 ModuleB가 있습니다. 둘 다 d3.js 라이브러리에 의존합니다. ModuleA와 ModuleB에 의존하는 세 번째 jspm 모듈 인 ModuleC가 있습니다. ModuleC를 실행하면 ModuleA와 ModuleB가 둘 다 격리되어 있어도 d3 오류가 발생합니다.항상 동일한 라이브러리 인스턴스를 반환하도록 SystemJS를 구성하십시오.

ModuleA는 SystemJS가 제공하는 d3 인스턴스에 기능을 추가하는 d3 플러그인 (nvd3)을 사용하기 때문에 이러한 상황이 발생합니다. 그러나 ModuleB가로드 될 때이 버전의 d3을 새 버전의 d3으로 바꿈으로써 ModuleA가 의존하는 플러그인을 효과적으로 지 웁니다.

ModuleA와 ModuleB 모두에 동일한 인스턴스 d3을 제공하도록 SystemJS를 구성하려면 어떻게해야합니까?

답변

2

알아 냈어. SystemJS 에서 기본적으로 동일한 모듈 인스턴스를 제공합니다. 그러나 요청한 모듈은 동일한 소스의 동일한 버전 이어야합니다.

필자의 경우 ModuleA는 jspm install d3을 통해 직접 d3에 의존하며 GitHub에서 d3 버전을 가져 왔습니다. ModuleB는 angular-nvd3의 종속성을 통해 간접적으로 d3에 의존했으며 결국 d3의 npm 버전으로 해석되었습니다. SystemJS는 동일한 라이브러리 였음을 알 수 없었기 때문에 두 버전을 모두로드했습니다.

npm 버전의 d3 (jspm install npm:[email protected])을 사용하기 위해 ModuleA를 업데이트하면 두 모듈 모두 ModuleC에서 제대로 작동하고 d3은 한 번만로드됩니다.

관련 문제