2013-12-20 5 views
0

내 파일의 첫 번째 줄은 다음과 같습니다AMD 모듈,

정의 ([ '플러그인/HTTP', 'durandal/응용 프로그램', '녹아웃', '플러그인/아약스', '플러그인/포매터 ', 기능 (HTTP, 응용 프로그램, 코, 아약스, 포매터) {

내 AMD 모듈의 부하 중 일부는 잘하지만, 일부는이 예에서 포맷터 매개 변수가 정의되어 있지 않습니다.

콘솔에 오류가 표시되지 않으며 동일한 플러그인 폴더에 formatters.js 파일이 있으며 다른 플러그인도 제대로 작동합니다.

어떻게 디버깅합니까? formatters.js에 중단 점을 넣으면 실행 중이므로 매개 변수가 정의되지 않은 이유는 무엇입니까?

그것은 거의 아무것도, 단지 하나 개의 기능이 없습니다 그래서 난 내 포매터의 JS를 제거하고 그것은 여전히 ​​작동하지 않습니다

define(['knockout'], function (ko) { 
    'use strict'; 

    return { 
     //convert to number 
     rawNumber: function (val) { 
      if (val == null) 
       return 0; 
      else 
       return Number(ko.utils.unwrapObservable(val).toString().replace(/[^\d\.\-]/g, '')); 
     } 
    }; 
}); 

이, 또는 내 durandal의 설정 내 모듈에 문제가, 또는 무엇이 모듈이 정의되지 않았 음을 다른 사람에게도 알았습니까? 이것은 무엇을 의미 할 수 있습니까?

도와주세요. 감사!

답변

0

일반적으로 내가 서로를 참조하는 두 개의 모듈을 가지고 있기 때문에 AMD 모듈에서이 문제가 발생합니다. 이 경우 첫 번째 모듈은로드가 완료되지 않았기 때문에 두 번째 모듈의 컨텍스트에서 정의되지 않지만 두 번째 모듈은로드가 완료 될 때까지 별칭을 확인하지 않기 때문에 첫 번째 모듈에 정상적으로로드됩니다.

예 -

= 플러그인 모듈/moduleOne

define(['plugins/moduleTwo'], function (hey) { 
    console.log(moduleTwo); 
}); 

= 플러그인 모듈 moduleTwo 제대로 해결하지만 moduleOne 정의되지 이때/moduleTwo

define(['plugins/moduleOne'], function (hey) { 
    console.log(moduleOne); 
}); 

에게. 당신이 당신의 두 번째 모듈이 활성화 된 후이 메소드를 호출하지만 moduleOne 참조하기 전에 수있는 그런

function checkModule() { 
    if (!moduleOne) { 
     moduleOne = require('plugins/moduleOne'); 
    } 
} 

- -

var moduleOne; 
checkModule(); 
moduleOne.doSomething(); 
+0

를 이것은이 문제를 얻으려면 두 번째 모듈에서 문을 필요로을 사용할 수 있습니다 알다시피,이 경우에는 두 모듈 모두 녹아웃을 참조하지만, 그것에 관한 것이므로 서로를 참조하지 않으므로이 동작을 유발할 수있는 다른 것이 있어야합니다. – pilavdzice

+0

어떤 경우에는 모듈에 구문 오류가있는 경우 오류가 발생하지 않으며 모듈을 무시한다는 사실을 알고 있습니다. 정규 표현식으로 인해 모듈을 무시할 수 있습니까? – pilavdzice

관련 문제