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

access module of other context in requirejs

本文关键字:访问 模块 上下文 其他 requireJS      更新时间:2023-09-26

我正在尝试从外部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();
是否可能,

如果可能,如何?我在任何地方都找不到任何信息。

谢谢

我不完全确定你在这里要完成什么。看起来您正在将需要.js异步 API 与节点.js同步需要 API 混合在一起。

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

该行

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

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

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