Node.js与Ubuntu兼容性问题及解决方案
sudo安装全局npm包可能导致权限混乱,后续运行时出现“EACCES”错误;非root用户运行Node.js应用时,若端口低于1024(如80端口),需特殊权限。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash,加载环境后(source ~/.bashrc),可通过nvm install 18.0.0安装指定版本,nvm use 18.0.0切换版本。curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -(添加仓库),sudo apt install -y nodejs(安装)。该方法安装的版本较官方仓库新,且支持后续升级。sudo apt install build-essential python3 make,确保能编译C/C++模块(如bcrypt、sqlite3)。node_modules文件夹和package-lock.json文件,重新运行npm install,让npm根据当前系统环境重新编译依赖。server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
重启Nginx后(sudo systemctl restart nginx),Node.js应用可通过80端口访问。sudo运行应用(不推荐,存在安全风险),或修改端口绑定权限(sudo setcap 'cap_net_bind_service=+ep' $(which node))。mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
之后,全局安装包时无需sudo(如npm install -g nodemon)。npm install -g pm2,启动应用:pm2 start app.js。