【问题标题】:RequireJS does not accept URL`s in the config`s paths declarationRequireJS 不接受配置路径声明中的 URL
【发布时间】:2013-05-22 05:01:18
【问题描述】:

我想以这种方式注入 google,这样我就可以在 runner.js 中注入我自己的 google mock,以便在不需要 http 调用的地方进行单元测试。

 paths: {
        lib: 'lib',        
        async: 'lib/async',
        google: 'async!http://maps.google.com/maps/api/js?sensor=false'
    },

define(['google'], function(google) {

});

google 总是未定义的。

当我像这样使用定义时:

define(['async!http://maps.google.com/maps/api/js?sensor=false'], function(google) {

    });

但我不能那样使用它,因为 goodle 在生产代码中被硬编码为字符串。这样我就不能在 runner.js 路径定义的单元测试中注入我自己的 google mock...

为什么第一种方法行不通?

【问题讨论】:

    标签: requirejs async.js


    【解决方案1】:

    Google 库不实现模块模式。它们将所有功能暴露给全局 google 变量。在您的模拟库中,只需模拟全局可访问的 google 变量上的所有内容。解决方法是包含 shim 配置,以便在加载时,RequireJS 知道要传递给您的模块:

    requirejs.config({
        // ...
        shim: {
            'google': {
                exports: 'google'
            },
        }
    });
    

    在上面的示例中,您说当加载 google 模块时,将全局 window.google 变量作为模块引用传递给您的模块。

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 2018-08-03
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多