1

ページを更新すると Uncaught TypeError が発生します。私のjs/app/main.jsファイルはjs/app/utilities/resize.jsでメソッド update() を呼び出すことができません。

エラー出力

キャッチされていないTypeError: オブジェクト関数 U(n){return n&&typeof n=="object"&&!me(n)&&ne.call(n,"ラップされた")?W(n)} にはメソッド 'update' がありません

残念ながら、問題を単純化された実際の例に分離/複製することはできませんでした。ただし、以下のフォルダー ツリー内の js ファイルをクリックすると要点が表示されます。

  • index.html
  • js/
    • app.js
    • ライブラリ/
      • require.js
      • jquery.js
      • ...など
    • アプリ /
      • main.js -キャッチされていないTypeError @line 566
      • ユーティリティ /

app.js

require.config({

    urlArgs: "bust=" + (new Date()).getTime(),

    baseUrl: WP.THEME_URL+"/js",

    paths: {
        app     : "app"
        , jquery  : "lib/jquery-2.0.2.min"
        , ...
        , resize    : "app/utilities/resize" 
        , ...
    }
});

require(["app/main"],function(){});

メソッドupdate()は、main.jsからresize.jsで呼び出されています。

main.js

define([ 'require' , 'jquery' , ... ,'resize' ], function( require , $ , ... , resize ) {

...

関数のセットアップ() {

 resize.update(); // Uncaught TypeError happens here

}

$doc.ready( セットアップ );

resize.js

define([],function () {   

    var resizeItems = [],
        update = function () {

            for (i = 0; i < resizeItems.length; i++){
                var item = resizeItems[i];
                item.callback( App.screen.width , App.screen.height );
            }
        };

    return {
        update  : update,
        add     : function( item ) { resizeItems.push( item ); }
    }
});

前もって感謝します


編集:依存関係の問題だったようです。app.js で "resize" を require に追加することで解決しました。

require(["resize","app/main"],function(){});

main.js で define() に「サイズ変更」を追加すると、正しい依存関係が保証されると思いました。

define([ 'require' , 'jquery' , ... ,'resize' ], function( require , $ , ... , resize )...
4

1 に答える 1

1

依存関係の問題だったようです。

app.js 内の require() に「resize」を追加すると解決しました。

require(["resize","app/main"],function(){});

main.js で define() に「サイズ変更」を追加すると、正しい依存関係が保証されると思いました。

define([ 'require' , 'jquery' , ... ,'resize' ], function( require , $ , ... , resize )...
于 2013-06-11T11:40:23.293 に答える