ページを更新すると 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.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 )...