2012-01-01 88 views
4

我跑进在Heroku上部署一个问题,如果我整合Rails的在资产管道和Uglifier 3.1可能的错误

uglifier发生错误。

我怀疑问题可能与纳入许多本地化的日历。

我工作围绕错误设置:

# Compress JavaScripts and CSS 
config.assets.compress = false 

我无法检查文件的临时文件清理。我也无法让RubyMine中的调试器在断点处停下来。

任何想法,如果这是一个错误?任何方式让临时文件不被删除?任何方式作出耙任务的RubyMine调试工作(是的,尝试了很明显,使用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

回答

6

你可能会发现,你的js文件一个有语法错误的地方。这可能处于块,或其他一些小问题的最后一个失踪分号,通常浏览器仍然会加载JS,它会工作,但uglifier无法与这些错误进行压缩。我将开始寻找在本地化文件第一。

一种方法来找出哪些文件包含的错误是预编译本地有一组文件的最小重新和一个直至其断裂。如果是添加的事情之一是由于缺少分号,破损将倒数第二个文件你添加编辑。之后我删除流浪“调试”语句

+0

这太烦人了uglifier并没有告诉我的错误的绽放行号!我的意思是,拜托....这不就是编译器的意图么?对我而言,不幸的是这是一个我下载的库有3000行左右的库,所以我现在花费时间去掉库中的一些部分,并重新编译,直到找到出现语法错误的位。 – 2013-09-13 20:00:01

3

矿预编译。 Woops。

+0

thx为提示。对我来说也是如此:) – SpoBo 2012-02-29 11:54:54

+0

thx一堆!一直在寻找小时 – benvds 2012-04-17 15:27:04

0

的国际化文件“的jQuery-UI-i18n.js”各有评论前一个人品不好。

纵观前两行与壳“更多”,显示了错误的字符:

<U+FEFF>/* Afrikaans initialisation for the jQuery UI date picker plugin. */ 
/* Written by Renier Pretorius. */ 

后卸掉这个角色它的工作原理。

2

如果有人读这个线程遇到Unicode字符或“UTF-8无效字节序列”在你的Rails应用程序的问题,尝试把这个在您的production.rb文件:

# override default uglifier options so we don't mangle unicode 
    config.assets.js_compressor = Uglifier.new(output: {ascii_only: true}) 

在我的情况下, uglifier正在将我的javascript中的字符串转换为像\udbff这样的UTF-8字符í¯¿,这最终破坏了一些unicode正则表达式。 (这与涡轮链轮和codemirror发生,但你可能会随时遇到它你的JavaScript依赖于Unicode字符的ASCII表示。)

+1

在我的情况下,它将诸如“\ u24B6”的一串Unicode字符串键变成了“?”在编译select2变音符之后,导致一堆重复的键。这导致了语法错误:“在严格模式下不允许在对象字面值中复制数据属性。” – 2013-10-19 03:02:02