requirejs中其他上下文的访问模块

时间:2015-02-03 07:04:31

标签: javascript module requirejs togetherjs

我正在尝试从外部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();

是否可能,如果可能,怎么样?我在任何地方都找不到任何信息。

由于

1 个答案:

答案 0 :(得分:0)

我不完全确定你要在这里完成什么。看起来你正在混合require.js异步api和node.js同步require api。

我认为当您在不指定上下文名称的情况下执行require.config时,您正在配置全局需求上下文。所以调用CJS.require(..)应该等同于调用window.require(..)。

该行



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




对我来说很奇怪。通常,您将在require.config调用中指定上下文名称,而require(..)调用的第一个参数将是依赖项列表。此外,您通常也会将回调函数传递给require(..)调用。

我希望这些指针可以帮助你(或其他人)更好地了解require.js