1. 查看错误日志(首要步骤)
错误日志是定位问题的核心线索。Node.js应用的日志通常位于以下位置:
console.log或console.error直接输出,可通过tail -f /path/to/your/app/logs/error.log实时查看(需提前配置日志路径);~/.pm2/logs/目录下(可通过pm2 logs查看实时日志);sudo tail -f /var/log/messages或journalctl -u your-nodejs-service-name查看。2. 检查依赖项完整性
依赖缺失或版本冲突是常见错误来源。进入项目目录,运行npm install安装package.json中定义的所有依赖;若仍报错,可使用npm ls检查依赖树,确认是否有未满足的依赖或版本冲突。
3. 验证端口可用性
若应用无法启动并提示EADDRINUSE(端口被占用),需检查端口占用情况:
sudo netstat -tuln | grep <port_number>(如80、3000)查看端口占用进程;sudo kill -9 <PID>)或修改应用端口(如将3000改为3001)。4. 检查系统资源限制
资源不足可能导致应用崩溃。使用以下命令监控系统资源:
top:查看CPU和内存占用,重点关注Node.js进程的资源消耗;free -m:查看内存剩余情况(若内存不足,可优化代码或增加内存);df -h:查看磁盘空间(若磁盘满,需清理无用文件)。5. 调整SELinux设置(若启用)
SELinux可能阻止Node.js访问文件或端口。可临时禁用SELinux测试是否为问题根源:
sudo setenforce 0(临时关闭);/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后重启系统。6. 使用调试工具定位代码问题
node inspect app.js启动调试模式,或在代码中添加debugger;语句,然后在Chrome浏览器中访问chrome://inspect,点击“Configure”添加Node.js进程,即可进行断点调试、变量查看等操作;.vscode/launch.json文件,配置调试任务(如"program": "app.js"),点击调试按钮即可启动调试,支持断点、单步执行、观察变量等功能;nodemon监控代码变化并自动重启(npm install -g nodemon,然后运行nodemon app.js),或使用debug模块输出调试日志(require('debug')('app')('Debug message'))。7. 检查代码语法与路径
npm run lint(需配置ESLint)检查代码语法;require('./utils/helper')需对应实际文件路径),尤其在跨平台迁移项目时,注意路径分隔符(Linux用/,Windows用\)。8. 更新系统与软件包
过时的系统或软件包可能导致兼容性问题。运行以下命令更新系统:
sudo yum update:更新CentOS系统包;npm update -g:更新全局npm包(如pm2、nodemon)。9. 配置日志管理工具(长期解决方案)
使用PM2或winston等工具规范化日志记录:
sudo npm install -g pm2,启动应用时使用pm2 start app.js --name my_node_app,PM2会自动记录错误日志(默认路径~/.pm2/logs/);可通过pm2 set pm2:error_file /var/log/nodejs/my_node_app-error.log自定义错误日志路径;npm install winston,创建logger.js配置文件(如指向/var/log/nodejs/error.log),在应用中引入并使用logger.error()记录错误。