RequireJS不接受配置路径声明中的URL

RequireJS不接受配置路径声明中的URL,requirejs,async.js,Requirejs,Async.js,我想以这种方式注入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(go

我想以这种方式注入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) {

});
谷歌总是没有定义

当我像这样使用define时,它可以工作:

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

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


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

谷歌库没有实现模块模式。它们向全局google变量公开所有功能。在模拟库中,只需在全局可访问的google变量上模拟所有内容。解决方法是包括垫片配置,以便在加载时,RequireJS知道传递给您模块的内容:

requirejs.config({
    // ...
    shim: {
        'google': {
            exports: 'google'
        },
    }
});
在上面的示例中,您是说当google模块加载时,将global window.google变量作为模块引用传递给您的模块