在 Debian 上用 Node.js,常见“坑”主要集中在版本陈旧、权限、服务管理、架构差异几个方面。下面按实战经验总结:
Debian 稳定版(如 Debian 11/12)仓库里的 nodejs 通常是 很老的 LTS:
node 12node 18问题
解决
✅ 不要用 apt install nodejs 当主力
✅ 用以下方式之一:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
nvm(推荐开发环境)Debian 默认禁止 npm -g 写到系统目录(尤其 NodeSource 安装后)
典型错误
EACCES: permission denied
解决
nvmnpm config set prefix ~/.npm-global
export PATH=~/.npm-global/bin:$PATH
--unsafe-perm很多人写完 Node 服务:
node app.js
关掉 SSH 就挂了。
正确做法 写 systemd:
[Unit]
Description=Node App
[Service]
ExecStart=/usr/bin/node /opt/app/index.js
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
systemctl enable nodeapp
systemctl start nodeapp
Node 监听 80 / 443 会失败(非 root)
解决
setcap cap_net_bind_service=+ep /usr/bin/node
建议
某些新版 Node(20+)需要较新 glibc
老 Debian(如 9)会直接无法运行
检查
ldd --version
服务器长期运行 npm:
/root/.npm 或 /home/xxx/.npm 很大清理
npm cache clean --force
日志时间不对,排查困难
timedatectl set-timezone Asia/Shanghai
Node 起来了,外部访问不了
ufw allow 3000
apt upgrade 可能覆盖 NodeSource
建议
apt-mark hold nodejs
Debian 上 Node.js 的坑,90% 来自“用系统包管理器管 Node”
最佳实践
如果你愿意,我可以: