应用程序在javascript上很丰富,包含一堆backbonejs类,jquery,bootstrap和许多库。
没有预编译,一切都很好。但是,当我运行rake资产:在本地或在生产服务器上进行预编译时,会出现问题。
Uncaught TypeError: undefined is not a function application.js:8
application.js包含所有内容(只是第一眼),所以我不知道哪里可以成为问题。即使我不知道从哪里开始寻找问题。 在application.js中调试输出javasript是不可能的,对吧?
有什么想法吗?谢谢你们。
答案 0 :(得分:1)
您可能无序地连接文件。确保以正确的顺序加载所有依赖项。例如:必须在骨干之前加载下划线。
答案 1 :(得分:1)
经过数小时的调试,我发现了问题所在。
PostsRouter是代码中路由器的名称,当它被预编译时,类的名称被更改为" n",这是不好的,因为在构造函数中我有以下代码
this.constructor.toString().match(/function\s*(\w+)/)
所以我的课程名称错了,但那还可以。然后我就这样做了:
new App.Collections["" + this.class_name + "Collection"]
那就是问题所在。 App.Collections.nCollection不存在,正确的名称是App.Collections.PostsCollection。
我通过将字符串文字添加到类定义中来修复它,而不是从构造函数名称解析。
度过美好的一天!