先从日志入手,别一上来就改代码
先判断是应用报错还是系统拦截。应用日志可直接看文件,未落盘时先重定向标准输出和错误输出。

tail -f /path/to/app.log
node app.js >> logs/app.log 2>&1 &应用日志不够时,继续查 systemd 和系统日志:
journalctl -u my-nodejs-app -t必要时再看 /var/log/messages、/var/log/syslog。
确认运行环境和依赖是否完整
先确认 Node.js、npm 是否可用:
node -v
npm -v
export PATH=/usr/local/node/bin:$PATH需要安装或切换版本时,可用 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install node出现 Error: Cannot find module 'xxx' 时,先补依赖;若依赖状态异常,再重新安装。需要全局工具时用全局安装,并确认全局路径如 /usr/local/lib/node_modules 可用。
npm install xxx
npm install
npm install -g xxx端口、权限与 SELinux 是高频故障点
报 Error: listen EADDRINUSE :::3000 时先查端口占用:

netstat -tuln | grep 3000
kill -9 也可把端口从 3000 改到 3001 等未占用端口。
绑定 80、443 这类端口通常需要更高权限,可临时提升权限,或改用不小于 1024 的端口;若必须长期监听特权端口,可授予能力:
sudo node app.js
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node出现 EACCES、ENOENT 时,重点检查目录权限和属主:
chmod -R 755 /path/to/directory
chown -R user:group /path/to/directory
chown -R centos:centos /var/www/app权限看起来正常但仍 Permission denied,就检查 SELinux。可先临时验证:
sudo setenforce 0若问题消失,再修改 /etc/selinux/config 中的 SELINUX=enforcing,或用 audit2allow 生成规则。
资源检查与调试器定位
应用频繁崩溃、卡顿或变慢时,先排除资源瓶颈:

top
df -h
free -m需要看调用栈、断点和变量时,启动内置调试器:
node inspect app.js然后在 chrome://inspect 连接。若要反复断点和变量监视,可在 VS Code 的 .vscode/launch.json 中配置 "type": "node"、"program": "app.js"。
最后再看代码语法、逻辑和版本更新
环境层排除后,再检查代码和兼容性。先做静态检查:
npm run lint结果不对但程序能跑时,用 console.log 或 debugger 缩小范围,重点看异步回调、数据库返回和错误是否被吞掉。
涉及旧环境或依赖兼容性时,再看更新:
sudo yum update -y
npm outdated
npm update一套更省时间的排查顺序
- 先看应用日志、
journalctl。 - 再查
node -v、npm -v、依赖安装状态。 - 再检查端口占用、文件权限、SELinux。
- 出现卡顿或随机崩溃时,看
top、df -h、free -m。 - 最后再用
node inspect app.js、VS Code、npm run lint和版本更新定位。







