2012-11-18 33 views
1

你可能通過window.onerror保護你的js腳本來捕捉全局異常, 事情是,我的生產文件被壓縮,行號總是1,所以我真的不知道錯誤發生在哪裏?你有什麼建議我能在這種情況下做什麼?javascript window.onerror消息僅包含「腳本錯誤」。我怎樣才能得到行號?

window.onerror = function (errorMsg, fileName, lineNumber) { logger.sendError(errorMsg + " file name " + fileName, "window.onerror") }; 
+1

如果您的代碼被縮小爲一行,您將獲得唯一可以獲得的有意義的行號。瀏覽器無法猜測您的代碼在被縮小之前的佈局方式。 – lanzz

+1

在壓縮文件上開發你的項目不是沒有意義嗎? (如果壓縮文件是你的)。你可以美化你的js文件,http://jsbeautifier.org/ – ocanal

+0

我有服務器上的源文件和壓縮文件,我正在尋找一種方法來替換壓縮文件與美化的情況下的例外 –

回答

0

正如Ianzz在他的評論中所說,一般來說,瀏覽器不可能爲縮小的代碼確定一個有意義的行號。畢竟:如果所有的代碼都在一行上,正確的(但相當無用的)行號總是1

但是有一種運動允許使用源映射,它是單獨的文件,用於指定(縮小的)JavaScript如何映射回更有意義的輸入。

http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

該規範是相對較新,沒有太多流傳至今還沒有。但取決於你的縮小框架,可能有一個工具可用來生成源地圖。

0

如果它顯示「腳本錯誤」,那麼瀏覽器已經阻止了您的錯誤處理代碼因違反CSP(內容安全策略)而訪問堆棧。

如果您的代碼來自不同的域,或者它使用eval或JSONP,通常會發生這種情況。

默認情況下,大多數打包程序(例如browserify/webpack)都使用eval或JSONP。對於webpack,您可以設置config.devtool來更改此設置。

相關問題