4

EmberJS 응용 프로그램을 광범위하게 RequireJS 라이브러리를 사용하는 대형 포털 응용 프로그램에 임베드하려고합니다. 나는 ember-cli를 사용하여 프로젝트를 구축하고 있습니다. 작성된 응용 프로그램은 dist/assets/vendor.jsdist/assets/myapp.js의 두 파일로 구성됩니다. EmberJS 응용 프로그램은 임베드 한 후 작동하지만 포털 응용 프로그램의 자바 스크립트는 중단됩니다. 나는이 문제를 발견 한 몇 가지 조사 후 임베디드 ember-cli 프로젝트가 RequireJS와 충돌합니다.

vendor.js가 자신의 변수 전역 네임 스페이스에있는 웹 사이트의 변수 require, requirejs, requireModuledefine 갈등을 정의하는 것입니다. myapp.js 파일에는 앱의 모듈을로드하는 define 문이 들어 있습니다.

이름을 바꾸거나 다른 네임 스페이스에 넣을 수 있습니까?

내가 떠올리 던 유일한 해결책은 두 개의 .js 파일 내의 변수 이름을 수동으로 바꾸는 것이 었습니다. 이것은 작동하는 것처럼 보이지만 다소 번거롭고 자동화가 가능하다면 좋을 것입니다. 나는 또한 RequireJS 최적화 도구를 사용하는 것에 대해 알았지 만, vendor.js 파일을 사용할 수는 없다.

도와 주시겠습니까? 감사합니다.

+0

안녕하세요 @janhink, 저는 오랜 시간 동안 알고 있습니다. 나는 당신의 질문에 비틀 거리며 귀하의 솔루션이 무엇인지 알고 싶습니까? 어떤 변수를 바꿨습니까? 왜냐하면 나는 같은 문제가 있기 때문에 :) 미리 감사드립니다! – Obama

답변

3

저도 같은 문제가되었고, 많은 검색 한 후 나는 내 프로젝트에 ember-derequire 부가 기능을 추가하여 그것을 해결하기 위해 관리 믿습니다 다음과 '정의'필요 '

ember install ember-derequire 

은 그 모든 변경됩니다 '문을'eriuqer '및'enifed '로 변경합니다. 당신은 eriuqer가 마음에 들지 않고 enifed되면 옵션을 사용하여 맵핑 된 것을 겹쳐 쓸 수 있습니다 (주의 할 점은 같은 길이의 것을 사용해야한다는 것입니다).

도움이되지 않는 경우, 제가 발견 한 또 다른 유망한 점은 noconflict() 함수가있는 것입니다. 그러나 loader.noConflict() 호출을 넣거나 빌드를 가져올 수 없습니다. 대체 이름을 사용하여 코드를 생성 할 수도 있지만 상황에 따라 첫 번째 옵션이 작동하지 않으면 도움이 될 수 있습니다.

+0

답변 해 주셔서 감사합니다. 오랜 시간이 지났으므로 이제는 더 이상 테스트 할 방법이 없습니다.하지만 누구든지 작동한다면 해결할 수 있습니다. – janhink