Debian 上 Node.js 日志报错 的原因很多,不能一概而论。下面我按最常见场景给你一个排查思路,并给出典型错误示例 + 解决办法。你可以对照看看,或者把具体报错日志贴出来,我可以更精准地帮你分析。
Debian 默认仓库里的 Node.js 版本通常很旧。
node -v
SyntaxError: Unexpected token '??='
或
Cannot find module 'xxx' (requires higher Node version)
✅ 不要用 apt 默认版本,用 NodeSource 或 nvm:
curl -fsSL https://deb.nodesource.com/setup_18.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 18
EACCES: permission denied
EPERM: operation not permitted
root 安装包/usr/lib/node_modules 权限不对不要 sudo npm
sudo chown -R $USER:$USER ~/.npm
sudo chown -R $USER:$USER node_modules
或全局安装时:
npm config set prefix ~/.npm-global
export PATH=~/.npm-global/bin:$PATH
如果你用 systemd 启动 Node.js 服务:
journalctl -u your-node-service -f
Error: Cannot find module '/var/www/app/index.js'
listen EADDRINUSE: address already in use :::3000
ss -lntp | grep 3000
Error: libstdc++.so.6: version `GLIBCXX_3.4.29' not found
某些 npm 包(如 sharp、canvas、grpc)依赖系统库。
sudo apt update
sudo apt install -y build-essential libstdc++6
MODULE_NOT_FOUND
rm -rf node_modules package-lock.json
npm install
如果你用的是:
winstonpm2 logsconsole.errorENOENT: no such file or directory, open '/var/log/node/app.log'
sudo mkdir -p /var/log/node
sudo chown -R $USER:$USER /var/log/node
journalctl -xe
或
pm2 logs
node -v
npm -v
cat /etc/debian_version
你可以直接贴出来:
node app.jssystemdpm2例如:
Debian 12,Node 18,用 systemd 启动,报错
EADDRINUSE
我可以一步一步帮你修 ✅