运行rake资产预编译后,在函数中获取未定义

时间:2013-03-01 20:50:43

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

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

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

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

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

有什么想法吗?谢谢你们。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

PostsRou​​ter是代码中路由器的名称,当它被预编译时,类的名称被更改为" n",这是不好的,因为在构造函数中我有以下代码

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

所以我的课程名称错了,但那还可以。然后我就这样做了:

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

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

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

度过美好的一天!