【问题标题】:After running rake assets precompile, getting undefined in not a function运行 rake 资产预编译后,在非函数中未定义
【发布时间】:2013-03-01 20:50:43
【问题描述】:

应用程序包含丰富的javascript,包含一堆backbonejs类、jquery、bootstrap和许多库。

没有预编译,一切都很好。但是,当我在本地或生产服务器上运行 rake assets:precompile 时,就会出现问题。

Uncaught TypeError: undefined is not a function                  application.js:8

application.js 包含所有内容(乍一看),所以我不知道哪里有问题。即使我不知道从哪里开始寻找问题。 在application.js中调试输出javasript是不可能的吧?

有什么想法吗?谢谢大家。

【问题讨论】:

    标签: javascript ruby-on-rails ruby assets precompile


    【解决方案1】:

    您可能正在无序地连接文件。确保以正确的顺序加载所有依赖项。例如:下划线必须在主干之前加载。

    【讨论】:

    • 订单看起来没问题。开发中没有问题,application.js中的顺序指定正确。
    • 你能链接到 application.js 第 8 行的内容吗?只需要前几行。
    【解决方案2】:

    经过几个小时的调试,我发现了问题所在。

    PostsRou​​ter 是代码中路由器的名称,当它被预编译时,类的名称被更改为“n”,这很糟糕,因为在构造函数中我下面有这段代码

    this.constructor.toString().match(/function\s*(\w+)/)
    

    所以我得到了错误的类名,但这仍然可以。然后我这样做:

    new App.Collections["" + this.class_name + "Collection"]
    

    这就是问题所在。 App.Collections.nCollection 不存在,正确的名称是 App.Collections.PostsCollection。

    我通过将字符串文字添加到类定义中来修复它,而不是从构造函数名称解析。

    祝你有美好的一天!

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多