Debian系統JS日志常見錯誤類型及解析
SyntaxError(語法錯誤)
當JavaScript代碼存在語法問題時觸發,如括號/引號不匹配、缺少分號、非法字符等。例如:if(true) { console.log('test'
(缺少閉合括號)。解決方法:檢查代碼語法,使用代碼編輯器的語法高亮功能輔助排查。
ReferenceError(引用錯誤)
引用未定義的變量或函數時發生,如console.log(a)
(變量a
未聲明)。解決方法:使用let
/const
/var
聲明變量,確保變量在當前作用域內可用。
TypeError(類型錯誤)
對非預期類型的值執行操作時觸發,如undefined.x
(訪問undefined
對象的屬性)、'123' + 456
(字符串與數字相加,若邏輯不允許則為錯誤)。解決方法:操作前檢查變量類型(如typeof variable !== 'undefined'
),使用可選鏈操作符(?.
)避免訪問未定義屬性。
RangeError(范圍錯誤)
數值超出允許范圍時觸發,如new Array(-1)
(數組長度為負數)、遞歸調用超過最大堆棧限制(Maximum call stack size exceeded
)。解決方法:確保數值在合法范圍內,優化遞歸算法(如改用迭代)。
Unexpected end of input(意外結束輸入)
代碼中括號、引號等符號不匹配導致未完整解析,如let obj = {id: 1
(缺少閉合大括號)。解決方法:檢查代碼完整性,使用代碼編輯器的自動格式化功能輔助排查。
EADDRINUSE(地址已使用)
嘗試監聽已被占用的端口時觸發,如Error: listen EADDRINUSE :::3000
(端口3000已被其他進程占用)。解決方法:使用lsof -i :3000
查找占用進程,用kill -9 <PID>
終止進程,或更換端口。
ReferenceError: module is not defined
在Node.js模塊中引用未定義的module
對象時發生,通常因模塊導出語法錯誤導致。解決方法:確保正確使用module.exports
或exports
導出模塊內容。
TypeError: Cannot read property ‘x’ of undefined
嘗試訪問undefined
或null
對象的屬性時觸發,如let user = null; console.log(user.name)
。解決方法:訪問屬性前檢查對象是否已定義(如user?.name
),或添加默認值(如user = user || {}
)。
JSON Parse Error(JSON解析錯誤)
解析無效的JSON字符串時觸發,如JSON.parse('{name: "John"}')
(JSON鍵未用引號包裹)。解決方法:確保JSON字符串符合規范(鍵名用雙引號包裹,無注釋),使用try-catch
捕獲解析錯誤。
NetworkError(網絡錯誤)
AJAX/fetch請求失敗時觸發,如跨域請求被攔截(CORS問題)、服務器未響應、URL錯誤等。解決方法:檢查請求URL的正確性,配置服務器CORS頭(如Access-Control-Allow-Origin
),確保網絡連接正常。