종속성을로드하기 위해 요구 사항을 사용하는 웹 응용 프로그램이 있습니다. Require config.shim
개체를 사용하여 포함 된 JS 라이브러리 집합이 있습니다.Require.js 최적화 프로그램이 shim 의존성을 잘못 주문했습니다.
두 예 라이브러리는 다음과 같습니다
require.config({
shim: {
"libs/leaflet": {
exports: "L"
}
"libs/leaflet-dvf": {
deps: ["libs/leaflet"],
exports: "L"
}
}
두 번째 라이브러리, leaflet-dvf
첫 번째, leaflet
이 필요합니다. 두 번째는 첫 번째 라이브러리가 정의하는 전역 범위 변수 L
에 따라 달라지는 첫 번째 플러그인입니다.
정상적으로 요구를 사용하여 응용 프로그램을 실행할 때 모든 것이 정상적으로 작동합니다. 심에서 라이브러리를 포함 할 수 있으며 모든 것이 훌륭하게 작동합니다. 아무 문제 없습니다.
이 코드를 r.js 옵티 마이저를 통해 실행하면 문제가 발생합니다. Optimizer는 최적화 된 단일 JS 파일을 빌드 할 때 종속성을 잘못 정렬합니다. 빌드 된 파일에서 leaflet-dvf
코드는 leaflet
코드 앞에옵니다. 종속 플러그인이 필요한 전역 범위 변수 L
을 찾을 수 없기 때문에 이로 인해 JS 런타임 오류가 발생합니다. 코뿔소를 사용하여
({
baseUrl: "../js",
paths: {
"requireLib": "../js/libs/require"
},
include: ["requireLib"],
name: "Main",
out: "bin/Main-built.js",
optimize: "none",
wrapShim: true
})
나는 최적화를 실행
이, 내 출력 파일을 빌드 : 같은내 빌드 설정 보인다. Main-built.js
파일에서 플러그인의 코드는 필수 라이브러리 앞에옵니다. 이로 인해 L undefined error
이 발생합니다.
최적화 된 JS 파일의 라이브러리 파일을 올바르게 정렬하려면 Optimizer가 내 Shim의 종속성 순서를 준수하도록하려면 어떻게합니까?
중복 가능성 (http://stackoverflow.com/questions/17914786/requirejs-sequential-execution-for-non-amd-js-files) –
이것은 약간 늦지 만 이미이 문제를 해결하지 않았다면 r.js 구성 내부에서 shim을 사용해야합니다. 그걸 고쳐야 해. – Vishwanath