常見日志路徑
logs
文件夾或配置文件指定的路徑(如 /var/log/myapp/
)。journalctl
查看(如 journalctl -u your-node-service
)。tail -f app.log
或 pm2 logs
(若用 PM2 管理進程)。命令行工具輔助
grep 'Error' app.log
:過濾錯誤關鍵字。less app.log
:分頁查看日志。錯誤類型 | 典型示例 | 解決方法 |
---|---|---|
語法錯誤(SyntaxError) | Unexpected token } |
檢查代碼語法,修復缺失括號、引號等問題。 |
引用錯誤(ReferenceError) | variable is not defined |
確保變量已定義,檢查拼寫錯誤。 |
類型錯誤(TypeError) | Cannot read property 'xxx' of undefined |
檢查對象是否初始化,使用可選鏈(?. )避免未定義訪問。 |
未處理 Promise 拒絕 | UnhandledPromiseRejectionWarning |
為 Promise 添加 .catch() ,或用 process.on('unhandledRejection') 全局捕獲。 |
內存不足錯誤 | JavaScript heap out of memory |
優化代碼減少內存占用,或通過 --max-old-space-size 調整內存限制。 |
端口占用錯誤 | Error: listen EADDRINUSE :::3000 |
用 lsof -i :3000 找到占用進程并終止,或修改應用端口。 |
日志管理工具
pm2 install pm2-logrotate
)。系統級工具
logrotate
:自動管理日志文件輪轉,避免占用過多磁盤空間。dmesg
:查看內核日志,排查硬件或系統級問題。調試技巧
node inspect app.js
啟動調試模式,配合 Chrome DevTools 逐步排查代碼。console.error
或使用日志庫記錄關鍵變量值,輔助定位問題。process.on('uncaughtException')
捕獲未處理的同步異常。error
、warn
、info
級別,便于快速篩選關鍵信息。參考來源: