0

require.jsを使用して Heyoffline を読み込もうとしていますshim config を試しました

require.config({
    paths : {
        heyoffline  : "libs/heyoffline"
    },
    shim: {
        'heyoffline': {
            exports: 'Heyoffline'
        }
    }
});

そしてモジュールファイル内。

define(["heyoffline"], function (Heyoffline) {
  new Heyoffline;
}

他の deps は問題なくロードされています。

そして、次の例外のみが発生します。

Uncaught TypeError: undefined is not a function 
4

1 に答える 1

0

Heyoffline は AMD モジュールではありません。問題は、 require.jsが読み込まれるまで待機していることだと思いますHeyofflineこの場合、グローバルスコープウィンドウスコープで定義されています。プロパティは最初にグローバルexportsを見つけますが、まだロードされていない値をウィンドウする必要があります。define

考えられる解決策は 2 つあります(私は Heyoffline を使用していないため、テストしていません)。

1) Heyoffline を適応させる

次のように heyoffline.js を変更してみてください。変更window.Heyoffline(window.Heyoffline2ファイルの最後):

return window.Heyoffline2 = new Heyoffline; 

それに応じてシムを変更します。

shim: {
        'heyoffline': {
            exports: 'Heyoffline2'
        }
    }

2) domReady プラグインを使用する

試すことができる別の可能性は、プラグインdomReadyを使用することです。Heyofflineまた、関数からパラメーターを削除しwindow.Heyoffline、正しいオブジェクトを使用していることを確認するために使用します。

define(["domReady!heyoffline"], function () {
  new window.Heyoffline;
}
于 2013-01-01T15:14:03.427 に答える