4

requirejs と async プラグインを使用して、JavaScript 用の Google API クライアント ライブラリを読み込もうとしました。

require.config({
    paths : {
        async : '../lib/requirejs/async'
    },
    waitSeconds: 60
});

define('gapi', ['async!https://apis.google.com/js/client.js!callback'],
    function(){
        console.log('gapi loaded');
        return gapi.client;
    }
);

require(['gapi'], function(){
    console.log("Callback");
    console.log(gapi);
});

このライブラリをロードする通常の方法は次のとおりです。

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

すべてが 2 秒未満で読み込まれますが、常に次のエラーが発生します。

Uncaught Error: Load timeout for modules: async!https://apis.google.com/js/client.js!callback_unnormalized2,async!https://apis.google.com/js/client.js!callback
http://requirejs.org/docs/errors.html#timeout 
4

1 に答える 1

8

TL;DR; タイムアウトを修正する必要がありますに変更し!callbackます。!onload

define('gapi', ['async!https://apis.google.com/js/client.js!onload'],
    function(){
        console.log('gapi loaded');
        return gapi.client;
    }
);

の後の値!は、非同期コールバックの引数名として使用されます。この場合、読み込まれる URIは、Google API が読み込まれるとすぐにトリガーされるグローバル変数 (コールバック関数) のようなものになります (すべての依存関係をプラグインに通知します) https://apis.google.com/js/client.js?onload=__async_req_3____async_req_3__満たされています)。

于 2013-08-06T13:39:25.563 に答える