常見日志路徑
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 級別,便于快速篩選關鍵信息。參考來源: