RequireJS不接受config`s路径声明中的URL`s

时间:2013-05-21 12:39:53

标签: requirejs async.js

我想以这种方式注入google,我可以在runner.js中注入我自己的google模拟器进行单元测试,我不想进行http调用。

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

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

});

谷歌总是未定义。

当我使用定义时它起作用:

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

    });

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

为什么第一种方式不起作用?

1 个答案:

答案 0 :(得分:0)

Google库不实现模块模式。他们将所有功能公开给全球谷歌变量。在你的模拟库中,只需在全局可访问的谷歌变量上模拟所有内容。解决方法是包含填充程序配置,以便在加载时,RequireJS知道要传递给您的模块:

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

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