Debian 上 Node.js 启动失败 的原因很多,常见原因和排查思路如下(按出现频率排序)。你可以对照看看属于哪一类,也可以把具体报错贴出来,我可以更精确定位。
现象
node: command not found
或
node: error while loading shared libraries
排查
node -v
which node
解决
✅ 推荐方式(NodeSource):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
✅ 或 nvm(适合开发):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
现象
Error: listen EADDRINUSE: address already in use :::3000
排查
ss -lntp | grep 3000
解决
kill -9 PID
现象
EACCES: permission denied
常见场景
pm2 / systemd 启动解决
sudo chown -R user:user /var/www/app
或 systemd 中指定用户:
User=node
现象
systemctl status nodeapp
journalctl -u nodeapp
常见错误
ExecStart 路径错误WorkingDirectory✅ 正确示例:
[Service]
ExecStart=/usr/bin/node /var/www/app/index.js
WorkingDirectory=/var/www/app
Restart=always
User=www-data
现象
SyntaxError: Unexpected token '??='
或
requires node version >= 18
解决
node -v
升级 Node.js:
nvm install 18
nvm use 18
现象
Error: Cannot find module 'express'
解决
rm -rf node_modules package-lock.json
npm install
现象
dmesg 中看到 Out of memory排查
dmesg | tail
free -h
解决
请依次执行:
node -v
npm -v
node index.js
ss -lntp
journalctl -xe
你可以直接贴:
cat /etc/os-release
node -v
例如:
Debian 11 + Node 20 + systemd 启动失败
Error: listen EADDRINUSE
我可以一步一步帮你修 ✅