2013-05-08 21 views
2

我有一個window.onerror處理程序發送JavaScript錯誤到我們的服務器。我希望通過使用源映射將縮小的源代碼中的錯誤鏈接回原始代碼來分析這些內容,但似乎Chrome和Firefox只提供錯誤的行號。據我所見,源圖沒有列號是沒有用的。如何在JavaScript中調試客戶端錯誤?

因此,給定一個縮小的行數和x is undefined形式的錯誤消息,我可以採取哪些步驟進行調試?

(如果它有什麼不同,我在Rails 3.2中使用資產管道)。

+12

調試時使用縮小的代碼並使用完整的原始代碼。 – 2013-05-08 15:46:32

+0

用jsbeautifier.org展開您的縮小代碼,然後檢查錯誤的行號,如果您無法查看原始來源。 – 2013-05-08 15:49:18

+0

此外,如果你只有一些原因縮小的代碼,你可以通過JSBeautifier堅持它,使其可讀性: http://jsbeautifier.org/ – MasNotsram 2013-05-08 15:49:57

回答

0

如果你想使用源地圖,你需要下載Chrome Canary(即預發佈版本的Chrome)。

這是一個實驗性功能,目前尚未發佈在主要的Chrome版本中。 (即使在加那利,它也必須在瀏覽器選項中明確打開)。

+0

源地圖在本地工作得很好 - 當我嘗試調試用戶發生的錯誤時,出現了我的問題。 'window.onerror'處理程序僅用三個參數調用,其中沒有一個是列。 https://developer.mozilla.org/en-US/docs/DOM/window.onerror – 2013-05-08 16:27:43

0

我建議使用Firebug與Firefox,這裏有一個教程,讓你開始:

http://thecodecentral.com/2007/08/01/debug-javascript-with-firebug

我這個用了幾次調試非常糟糕的JS,但我通常只是這樣做:

Firefox下拉菜單> Web開發人員> Web控制檯。這會告訴你#行和錯誤被拋出(最重要),我發現它通常是足夠的,而不需要經過調試工作。

1

Chrome(和IE10)現在會爲您提供列號,作爲window.onerror回調中的第四個參數。 Here's the Firefox bug for adding column numbers,但它看起來不太有希望。

+0

有趣的是,感謝評論。我最終最終保留了行號,這似乎是一個合理的妥協。 – 2013-10-07 11:17:58