我正在尝试从外部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 :(得分: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