2015-02-03 3 views
0

외부 requireJS 응용 프로그램에서 togetherJS (https://togetherjs.com/docs/contributing.html) 모듈에 액세스하려고합니다. 불가능 해 보입니다.요구 사항이 다른 컨텍스트의 액세스 모듈

TogetherJSConfig_noAutoStart = true; 
var CJS = CJS || {}; 

CJS.require = require.config({ 
    paths: { 
     togetherjs: 'https://togetherjs.com/togetherjs-min', 
     cjs: 'scripts/c' 
    } 
}); 

CJS.require(['togetherjs'], function() { 
// not working 
peers = require({context: "togetherjs"})("peers"); 

// not working 
// Module name "peers" has not been loaded yet for context: togetherjs. Use require([]) 
    TogetherJS.require = require.config(TogetherJS.requireConfig); 
    TogetherJS.require("peers"); 
}); 

내 응용 프로그램에서 requireJS를 사용하지 않는 경우, 내가 원하는 모듈에 액세스 할 수 있습니다

// works if I do not use requireJS in my app. 
    var peers = TogetherJS.require('peers').getAllPeers(); 

이 가능하고, 만약 그렇다면, 어떻게? 아무 데서도 정보를 찾을 수 없었습니다.

감사합니다.

답변

0

여기에서 성취하고자하는 것이 무엇인지 잘 모르겠습니다. require.js 비동기 api와 node.js synchronous require api가 섞여있는 것처럼 보입니다.

컨텍스트 이름을 지정하지 않고 require.config를 수행 할 때 전역 요구 컨텍스트를 구성한다고 생각합니다. 따라서 CJS.require (..) 호출은 window.require (..) 호출과 동일해야합니다.

라인

peers = require({context: "togetherjs"})("peers");

나에게 이상한 보인다. 일반적으로 require.config 호출에서 컨텍스트 이름을 지정하고 require (..) 호출의 첫 번째 매개 변수는 종속성 목록이됩니다. 또한 일반적으로 콜백 함수를 require (..) 호출에 전달합니다.

나는이 포인터가 당신 (또는 다른 사람들)이 require.js에 대해 더 잘 알고 있기를 바랍니다.