在 CentOS 上 Node.js 无法启动 的原因有很多,下面按最常见情况 → 排查思路 → 解决方案给你一个完整排查清单。你可以逐条对照。
| 现象 | 可能原因 |
|---|---|
node: command not found |
Node.js 未安装或未加入 PATH |
Permission denied |
权限不足 |
address already in use |
端口被占用 |
Illegal instruction |
Node 版本与 CPU 不兼容 |
node: symbol not found |
glibc 版本太低 |
| 启动后立刻退出 | 代码异常 / 未监听端口 |
| systemd 启动失败 | 服务文件配置错误 |
node -v
✅ 正常:
v18.x.x
❌ 报错:
-bash: node: command not found
CentOS 7 / 8 / Stream
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
验证:
node -v
npm -v
Error: listen EADDRINUSE: address already in use :::3000
lsof -i:3000
或
netstat -tunlp | grep 3000
杀掉进程:
kill -9 PID
或换端口:
app.listen(3001);
EACCES: permission denied
✅ 不要用 root 直接跑 npm
✅ 使用非 1024 以下端口(如 3000)
node app.js
如果必须用 80 端口:
sudo setcap cap_net_bind_service=+ep $(which node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found
glibc 2.17✅ 使用 Node 16(最稳妥)
nvm install 16
✅ 或使用 nvm 管理版本
Illegal instruction (core dumped)
使用旧版本 Node:
nvm install 14
/etc/systemd/system/nodeapp.service
[Unit]
Description=Node App
After=network.target
[Service]
Type=simple
User=nodeuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node /opt/app/app.js
Restart=always
[Install]
WantedBy=multi-user.target
❌ ExecStart 路径不对
检查真实路径:
which node
❌ 用户没有目录权限
chown -R nodeuser:nodeuser /opt/app
sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl status nodeapp
journalctl -u nodeapp -f
undefined()
node app.js
看是否有报错,而不是用 systemd 直接跑。
逐一执行:
node -v
npm -v
node app.js
lsof -i:3000
journalctl -xe
你可以直接贴出以下信息(越全越好):
cat /etc/centos-release
node -v
我可以 直接告诉你该用哪个 Node 版本、怎么装、怎么跑 ✅