在 Ubuntu 上运行 Node.js 时出现权限错误(permission denied / EACCES),通常是因为当前用户对某些文件或目录没有足够权限。下面按常见原因给你梳理一下,并给出对应解决办法。
报错示例:
EACCES: permission denied, access '/usr/lib/node_modules'
原因
你用了 sudo npm install -g,或者没用 sudo 但 Node 装在系统目录。
✅ 推荐解决方案(最安全):
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
然后重新安装:
npm install -g xxx
很多人直接用 apt 安装的 Node。
✅ 建议使用 nvm 管理 Node:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts
这样所有包都在用户目录下,不会有权限问题。
报错示例:
EACCES: permission denied, open '/home/user/project/xxx'
原因
✅ 修复目录权限:
sudo chown -R $USER:$USER /path/to/project
报错示例:
Error: listen EACCES: permission denied 0.0.0.0:80
✅ 解决方案:
sudo node app.js
可能导致:
✅ 尽量不要用 sudo 跑 Node
看看 Node 在哪:
which node
npm root -g
看权限:
ls -ld /usr/lib/node_modules
✅ Ubuntu + Node 权限正确姿势:
如果你能贴出完整报错信息,我可以精准告诉你到底是哪一种权限问题。