Require.js:未捕获TypeError:对象函数...没有方法

时间:2013-06-11 09:18:08

标签: javascript requirejs amd js-amd

当我刷新页面时,我收到了未捕获的TypeError,我的 js / app / main.js 文件无法调用 js / app / utilities上的方法update() /resize.js

错误输出

  

Uncaught TypeError:对象函数U(n){return n&amp;&amp; typeof n ==“object”&amp;&amp;!me(n)&amp;&amp; ne.call(n,“ wrapped < / strong>“)?W(n)}没有方法'更新'

遗憾的是,我没有设法将问题隔离/复制到简化的工作示例中。但您可以点击下面文件夹树中的js文件获取要点。

  • 的index.html
  • js /
    • app.js
    • lib /
      • require.js
      • 的jquery.js
      • ...等
    • app /
      • main.js - Uncaught 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(){});

main.js

main.js

  

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

     

...

     

功能设置(){

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

}

     

$ doc.ready(setup);

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(["resize","app/main"],function(){});

我认为在main.js中使用“resize”来定义()会确保正确的deps;

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

1 个答案:

答案 0 :(得分:1)

这似乎是一个依赖问题。

在app.js中向require()添加“resize”已经解决了它;

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

我认为在main.js中使用“resize”来定义()会确保正确的deps;

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