Rails 3.1 Possible Bug in Asset Pipeline and Uglifier
在raoku任务中失败时,在Heroku上部署时遇到问题
1 | rake assets:precompile |
最下面是集成
后出现的错误
- Rails 3.1
- jQuery日历:https://github.com/themouette/jquery-week-calendar
- Twitter引导
错误发生在uglifier中。
我怀疑问题可能与日历的许多本地化相关。
我通过设置以下错误来解决此问题:
1 2 | # Compress JavaScripts and CSS config.assets.compress = false |
由于临时文件被清除,我无法检查文件。我也无法让RubyMine中的调试器在断点处停止。
有什么想法可以解决吗?有什么办法可以使临时文件不被删除?使RubyMine调试器能够完成rake任务的任何方法(是的,尝试使用EAP 112-291进行显而易见的操作。
rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted! Unexpected character '' (line: 21454, col: 0, pos:
641761)Error
at new JS_Parse_Error (/tmp/execjs20111231-15374-1fve7h4.js:497:22)
at js_error (/tmp/execjs20111231-15374-1fve7h4.js:505:15)
at parse_error (/tmp/execjs20111231-15374-1fve7h4.js:596:17)
at Object.next_token [as input] (/tmp/execjs20111231-15374-1fve7h4.js:839:17)
at next (/tmp/execjs20111231-15374-1fve7h4.js:943:37)
at Object.semicolon [as 1] (/tmp/execjs20111231-15374-1fve7h4.js:986:38)
at prog1 (/tmp/execjs20111231-15374-1fve7h4.js:1527:28)
at simple_statement (/tmp/execjs20111231-15374-1fve7h4.js:1123:35)
at /tmp/execjs20111231-15374-1fve7h4.js:1031:35
at /tmp/execjs20111231-15374-1fve7h4.js:1510:32
您可能会发现其中一个js文件在某处存在语法错误。这可能是块末尾缺少分号或其他一些小问题。通常,浏览器仍然会加载js并且可以正常运行,但是uglifier无法将这些错误压缩为js。我将首先开始查找本地化文件。
找出哪个文件包含错误的一种方法是使用最少的一组文件在本地重新编译,然后逐个添加直到损坏。如果是由于缺少分号引起的,则破损将是您添加的倒数第二个文件。
我删除了一个杂乱的"调试器"语句后,对它进行了预编译。哇。
如果阅读此线程的任何人在rails应用程序中遇到Unicode字符或" UTF-8中无效的字节序列"的问题,请尝试将其放入您的production.rb文件中:
1 2 | # override default uglifier options so we don't mangle unicode config.assets.js_compressor = Uglifier.new(output: {ascii_only: true}) |
在我的情况下,丑陋者将我的JavaScript中的字符串(如
I18N文件" jquery-ui-i18n.js "在每个注释之前都有一个错误字符。
在shell中用" more "查找前两行时,显示错误的字符:
1 2 | <U+FEFF>/* Afrikaans initialisation for the jQuery UI date picker plugin. */ /* Written by Renier Pretorius. */ |
删除此字符后,它可以工作。