2012-10-20 46 views
0

我正在研究JavaScript應用程序,我試圖修復一個錯誤,但找不到它。這是我的。Javascript:顯示知道其編號的線段的內容

function my_function (txt) { 
    try { 
     return eval('('+ txt + ')'); 
    } 
    catch(e) { 
     alert(e.lineNumber); 
     return eval(txt); 
    } 

我傳遞一個文件給函數的內容,它好像有這個文件中的一個問題。問題是這條線

  alert(e.lineNumber); 

總是返回,甚至當我在文件的開頭添加行,所以我要確保我編輯的行權相同的號碼。爲此,我希望它顯示包含錯誤的行的內容。

請幫幫我。

回答

0

可以打印堆棧跟蹤使用e.stack

.... 
catch(e) { 
     alert(e.lineNumber); 
     console.log(e.stack) 
     return eval(txt); 
    } 
0

基本上有兩種情況: - 如果它是一個語法錯誤,那麼錯誤將被報告爲「EVAL」調用的位置是觸發它(不是「源」文件中的位置), - 如果它是一個語義錯誤(它被解析但在運行時失敗),那麼請看http://eriwen.com/javascript/js-stack-trace/以獲得有關跨瀏覽器堆棧轉儲的一些想法。

要調試第一種情況,您可能需要捕獲文件內容並嘗試自行解析(可能使用節點或jsl)。

我不知道你在做什麼,但我不得不說,代碼示例引發了一些問題(爲什麼eval不是JSON.parse,爲什麼讀取文件然後eval而不是包含它並調用一個函數,第二個eval是什麼)。

0

捕獲腳本的文本,必要時使用console.log (txt)並將輸出複製粘貼到文件中。將<script>置於該文件的頂部,並將</script>置於底部。使文件名以.html結尾。現在雙擊該文件圖標。這將啓動您的瀏覽器,該瀏覽器將讀取腳本並向瀏覽器控制檯輸出任何語法錯誤,以顯示它們出現的行號。