requirejs 및 context
구성을 사용할 때 실패하는 간단한 모카 테스트가 있습니다.요구 사항 모카 컨텍스트 오류
여기 여기 A.js
define([], function(){
return {};
});
있어 시험을의 spec.js
var requirejs = require('requirejs');
var localReq = requirejs.config({
baseUrl: "./",
context: "context1"
})
describe("context test", function() {
it("should not throw error", function() {
for (var i = 0; i < 100; i++) {
console.log(localReq("A"), i);
}
});
});
내가 테스트 mocha spec.js
을 실행할 때, 나는 다음과 같은 오류 얻을 :
catch되지 않은 오류 : 시도로드 "A"에서를 /Users/khirakawa/work/test/node_modules/mocha/bin/A.js 그런 다음 노드의 require ("A")를 시도했는데 오류로 인해 실패했습니다. 오류 : mo 찾을 수 없음 dule 'A'여기
는 스크린 샷입니다 :
A
가 제대로로드 100 회를 기록, 아직 테스트가 계속 실패했습니다 방법을 알 수 있습니다. 내가 context
설정을 주석 처리하면 정상적으로 작동합니다.
모카는 단 하나의 테스트 만 있지만 '1 회 통과'및 '1 회 실패'를 인쇄합니다.
왜 이런 일이 발생합니까? 모듈 동기 should work를 얻을 수 localReq
를 호출, 당신은 코멘트에서 지적
describe("context test", function() {
it("should not throw error", function (done) {
localReq(["A"], function (f) { done(); });
});
});
하지만 일부 설명 할 수없는 이유로하지 않습니다 :
감사합니다. 루이! 귀하의 설명은 브라우저 관점에서 의미가 있습니다. 노드 랜드에서 이해할 수없는 부분은 다음과 같습니다. 1) requirejs의 문서 상태는 "... 노드에서 실행될 때 모듈 로딩은 동기화 IO 호출을 사용하여로드되며 로더 플러그인은로드 메소드에 대한 호출을 동기식으로 해결해야합니다." 모듈을 먼저로드해야하는 곳은 어디에도 없습니다. 2) "_"의 기본 컨텍스트를 사용하면 내 테스트 사례가 작동하고 3) A에서 반환 된 내용을 {test : "test"}로 변경하면 {test : "test"}가 100 번 인쇄됩니다 , 동 기적으로로드되었음을 나타냅니다. –
'require ("A")'가 실패한 이유에 대한 나의 설명이 목표가 아닙니다. 그러나 실제로 RequireJS *가하는 것은 문서와 일치하지 않습니다. 그렇지 않으면 코드가 작동합니다. 이 시점에서, 그것은 나에게 버그처럼 보입니다. – Louis
감사합니다 루이, 여기 티켓을 열었습니다. https://github.com/jrburke/r.js/issues/662 –