以下是Ubuntu Node.js日志中的常見錯誤及解決方法:
端口占用(EADDRINUSE)
錯誤:Error: listen EADDRINUSE :::端口
解決:用sudo lsof -i :端口
查找占用進程,通過kill -9 PID
終止,或修改應用端口。
模塊未找到(Cannot find module)
錯誤:Error: Cannot find module 'xxx'
解決:檢查模塊是否安裝(npm install 模塊名
),確認模塊名拼寫正確。
權限不足(EACCES)
錯誤:Error: EACCES, permission denied
解決:用chmod
/chown
調整文件/目錄權限,確保進程有讀寫權限。
路徑錯誤(ENOENT)
錯誤:Error: ENOENT: no such file or directory
解決:檢查代碼中文件/目錄路徑是否正確,使用絕對路徑避免相對路徑問題。
內存不足(Heap Out of Memory)
錯誤:JavaScript heap out of memory
解決:用heapdump
模塊分析內存泄漏,優化代碼或增加服務器內存。
網絡通信錯誤(ETIMEDOUT/ENOTFOUND)
錯誤:Error: ETIMEDOUT
或ENOTFOUND
解決:檢查網絡連接、API端點可用性,增加請求超時時間或實現重試機制。
流未處理異常
錯誤:流操作未捕獲錯誤導致崩潰
解決:為流添加.on('error', callback)
事件監聽器,捕獲并處理異常。
PM2配置或進程管理錯誤
錯誤:pm2 stop
無效、進程異常
解決:用ps aux | grep node
確認進程狀態,檢查PM2配置文件路徑和權限,必要時用kill
強制終止。
環境兼容性問題
錯誤:代碼在不同Node.js版本或系統下報錯
解決:使用nvm
管理Node.js版本,測試代碼在目標環境的兼容性。
日志分析工具:
cat
/tail
/less
查看日志文件,journalctl -u 服務名
查看系統日志。