2014-03-05 2 views
1

curl.js를 스크립트 로더로 사용하는 프레임 워크와 같은 구조로 작업하고 있습니다. 모듈은 App 또는 Core 디렉토리에 위치 할 수 있으므로 응용 프로그램에서 핵심 모듈을 쉽게 대체 할 수 있습니다. 나는이 디렉토리를 검색하고 처음 발견 된 파일을 반환하는 서버 측 스크립트를 가지고 있었지만 클라이언트 측에서 백엔드의 도움없이 작업 할 수 있어야한다고 결정 했으므로 지금은 나열된 디렉토리 중 하나가 될 때까지 시도하는 함수가 있습니다. 파일이 있습니다.AMD 로더에서 404 오류를 감지 할 수있는 방법이 있습니까?

잠시 후 404 오류와 구문 오류를 구별 할 수있는 방법이 없다는 것을 깨달았습니다. 코드에 실제 오류가있는 경우 로더가 실패하기를 원하지만 404의 경우 다음 파일을 찾아야하며 파일을 찾을 수 없으면 마지막으로 실패합니다.

로드 된 코드의 오류가 아니기 때문에 스크립트가 404 (curl.js, AMD 또는 일반적으로 js)에서 실패했는지 여부를 감지 할 수 있습니까?

답변

0

보안 문제 때문에 브라우저가 스크립트 실패시 많은 정보를 제공하지 않습니다. 사실, IE는 심지어 "로드"이벤트를 호출하는 것을 거부합니다. AMD 로더가 가지고있는 유일한 정보는 define()이 호출되었는지 여부입니다.

일부 유형은 스크립트 파일의 시작 부분에 고유 한 전역 함수 호출을 배치하는 경우 스크립트 오류가 있음을 감지 할 수 있습니다. 해당 기능이 호출되었는지 확인할 수 있습니다. 스크립트의 구문 분석을 방해하는 SyntaxErrors는 감지 할 수 없지만 다른 유형의 오류는 감지 할 수 있습니다.

팩토리 기능을 실행하는 동안 오류가 발생하면 정확한 오류를 오류 복구 기능 (curl([]).then(callback, errback))으로 되돌릴 수 있습니다. 이 작동 여부를 확인 했습니까?

+0

작은 PHP 기반 로더를 만들었습니다. 모듈 ID에 GET 매개 변수를 포함시키는 것이 좋지 않다고 생각하십니까? 나는 require ([ 'fooModule? search = appModules, coreModules'])와 같은) 모듈 아이디에 검색 경로를 포함해야한다. 이러한 모듈은 항상 프레임 워크를 통해로드되므로 쿼리 문자열이 오타가 발생하지 않고 일관성 있고 안전하다는 것을 확실히 말할 수 있습니다. – jpeltoniemi

+0

이것은 많은 작업을하지 않은 합리적인 타협처럼 들립니다. 다행히 해결책을 찾았습니다. – unscriptable

관련 문제