【问题标题】:RequireJS: Using "require" in the callback of another "require" doesn't load from CDNRequireJS:在另一个“require”的回调中使用“require”不会从 CDN 加载
【发布时间】:2014-12-08 11:12:53
【问题描述】:

是否有任何理由在 require 函数的回调中调用 require 会从源而不是从 CDN 加载第二个 / 回调要求?

这是我的代码:

<script>
    var require = {
        baseUrl: 'http://my.cdn/assets/public/javascript/lib',
        paths: {
            app: '../app'
        }
    };
</script>
<script src='http://my.cdn/assets/public/javascript/lib/require.js'></script>

<script>
    require(['../commons'], function (common) {
        require(['app/somemodule']);
});
</script>

commons.js:

requirejs.config({
  baseUrl: 'assets/javascript/lib',
  paths: {
      app: '../app'
  },
  shim: {
    // shim configuration.
  }
});

页面加载时,会从 baseUrl 获取 require.js 和 commons.js。但是, somemodule 是从页面地址中获取的。将 somemodule require 移出回调会导致它从 baseUrl 加载。

为什么嵌套/回调不需要使用基本路径?认为这与传递给 requirejs 的回调函数有关,以便在缺少使用内联脚本设置的 requirejs 配置的上下文中执行......

【问题讨论】:

  • commons 内部是否有对require.config 的调用?如果是这样,请将其添加到您的问题中。
  • 调用了requirejs.config,现在用它更新问题。

标签: javascript requirejs


【解决方案1】:

问题在于,commons.js 中的 requirejs baseUrl 被覆盖 - 感谢@Louis 为我指明了正确的方向。

从 commons 中删除了 baseUrl 参数,一切正常。

【讨论】:

    最近更新 更多