CentOS 上 Node.js 启动失败的原因有很多,下面按最常见原因 + 排查方法给你一个系统清单,你可以逐条对照。
现象
node: command not found
检查
node -v
which node
解决
# 使用 NodeSource 安装(推荐)
curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
yum install -y nodejs
现象
Error: listen EADDRINUSE :::3000
检查端口
netstat -tunlp | grep 3000
# 或
ss -tunlp | grep 3000
解决
kill -9 PID
现象
EACCES: permission denied
常见场景
解决
# 不要用 root 跑 node(不安全)
# 推荐用普通用户 + 反向代理(nginx)
# 或给权限
chown -R user:user /project
chmod -R 755 /project
现象
Cannot find module 'xxx'
解决
rm -rf node_modules package-lock.json
npm install
现象
检查防火墙
systemctl status firewalld
firewall-cmd --list-ports
开放端口
firewall-cmd --add-port=3000/tcp --permanent
firewall-cmd --reload
SELinux(临时关闭测试)
setenforce 0
现象
systemctl status node.service
常见错误
WorkingDirectory示例 service
[Unit]
Description=Node App
After=network.target
[Service]
User=node
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node /opt/app/app.js
Restart=always
[Install]
WantedBy=multi-user.target
现象
SyntaxError: Unexpected token
解决
node -v
node app.js
# 看完整报错
journalctl -u node.service -n 50
如果你愿意,可以把下面内容发我:
cat /etc/redhat-release)我可以直接帮你定位到具体哪一行出错。