Node.js日志错误在Ubuntu中的解决方法
首先需要获取错误详情,Ubuntu中可通过以下方式查看Node.js相关日志:
tail -f /var/log/syslog或journalctl -u your-nodejs-service-name(若用systemd管理服务)查看系统级日志;node app.js > /var/log/app.log 2>&1 &),用tail -f /var/log/app.log实时查看;pm2 logs查看应用日志。EADDRINUSE、ENOENT)和堆栈跟踪,可快速定位问题根源。Error: listen EADDRINUSE: address already in use :::3000(端口3000已被占用)。lsof -i :3000(查看进程ID),kill -9 <PID>(终止进程);const port = process.env.PORT || 3001)。Error: Cannot find module 'express'(缺少依赖模块)。npm install xxx(如npm install express);package.json,运行npm install安装所有依赖。SyntaxError: Unexpected token '{'(代码语法不符合规范)。babel编译);eslint或prettier等工具提前检测语法问题。UnhandledPromiseRejectionWarning: Error: Something went wrong(未处理的Promise拒绝或异常)。process.on('uncaughtException', (err) => { console.error('Uncaught error:', err); process.exit(1); });try-catch捕获同步代码中的异常,或用.catch()处理Promise。FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory(内存溢出)。node --max-old-space-size=4096 app.js(将内存限制提升至4GB);Error: ENOENT: no such file or directory, open '/var/log/app.log'(文件或目录不存在)。logs/app.log是否存在);mkdir -p logs,touch logs/app.log);chmod -R 755 logs)。Error: EACCES: permission denied, open '/var/log/app.log'(无权限访问文件/端口)。chown -R $USER:$USER /var/log/app.log(将所有权给当前用户);sudo node app.js,但不推荐长期使用,建议调整权限);winston或pino等库记录结构化日志(支持不同级别、输出到文件/数据库),便于后续分析;logrotate工具自动分割日志文件(如按天分割),避免单个文件过大;pm2的监控功能(pm2 monit)或Prometheus+Grafana监控应用性能,设置错误告警(如邮件、短信通知);通过以上步骤,可系统性地解决Ubuntu中Node.js日志错误。若问题仍未解决,可将错误日志上传至社区(如Stack Overflow),提供详细信息(如Node.js版本、Ubuntu版本、错误堆栈)寻求帮助。