2

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

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

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

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

有任何想法吗?多谢你们。

4

2 回答 2

1

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

于 2013-03-01T20:55:08.973 回答
1

经过几个小时的调试,我发现问题出在哪里。

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

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

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

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

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

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

祝你今天过得愉快!

于 2013-03-02T07:17:26.403 回答