2012-01-01 63 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