问题现象:在终端输入node -v或npm -v时提示“command not found”,无法在任意目录下使用Node.js命令。
原因分析:Node.js的安装路径未添加到系统PATH环境变量中,导致终端无法识别命令。
解决方法:
/usr/local/bin或通过which node命令获取);~/.bashrc,Zsh为~/.zshrc),在末尾添加:export PATH=$PATH:/usr/local/bin(替换为实际路径);source ~/.bashrc(或对应配置文件)使更改生效。问题现象:执行npm install -g <package>时提示“EACCES: permission denied”,无法全局安装模块。
原因分析:Linux系统中/usr/local/lib/node_modules目录默认由root用户拥有,普通用户无写入权限。
解决方法:
sudo npm install -g <package>(不推荐,存在安全风险);sudo chown -R $USER /usr/local/lib/node_modules;nvm(Node Version Manager)安装Node.js,所有模块会安装在用户目录(如~/.nvm)下,无需提权。问题现象:运行项目时提示“Node Sass could not find a binding for your current environment”“GLIBC_2.27 not found”等版本不兼容错误。
原因分析:项目依赖的Node.js版本与当前安装版本不匹配,或系统库版本过低。
解决方法:
nvm管理多版本:nvm install <version>(如nvm install 18)切换至项目所需版本;sudo apt-get update && sudo apt-get install build-essential libc6-dev(针对GLIBC错误)。问题现象:执行npm install时提示“Error: Cannot find module”“ETIMEDOUT”或“ECONNRESET”。
原因分析:网络连接问题(如npm镜像源访问慢)、依赖模块缺失或版本冲突。
解决方法:
npm config set registry https://registry.npm.taobao.org;node_modules目录和package-lock.json文件,重新安装:rm -rf node_modules package-lock.json && npm install;问题现象:全局安装的模块无法在命令行中使用,或提示“command not found”。
原因分析:npm全局模块安装路径未添加到PATH环境变量中。
解决方法:
npm root -g(如/usr/local/lib/node_modules);~/.bashrc),添加:export PATH=/usr/local/lib/node_modules/.bin:$PATH;source ~/.bashrc使更改生效。问题现象:Node.js应用写入日志时提示“EACCES: permission denied”,或日志文件无法轮转。
原因分析:应用以root用户运行或日志目录权限不足,导致无法写入。
解决方法:
nodeapp)和组:sudo groupadd nodeapp && sudo useradd -g nodeapp nodeapp -s /bin/false;sudo mkdir -p /var/log/my-node-app && sudo chown nodeapp:nodeapp /var/log/my-node-app;pm2 start app.js --uid nodeapp --gid nodeapp;logrotate(如/etc/logrotate.d/my-node-app)实现日志轮转,避免日志文件过大。问题现象:需要同时使用多个Node.js版本(如LTS版和最新版),切换麻烦。
原因分析:未使用版本管理工具,手动安装多个版本易混淆。
解决方法:
nvm(Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash;source ~/.bashrc;nvm install 18(LTS版)、nvm install 20(最新版);nvm use 18(当前终端生效)或nvm alias default 18(设为默认版本)。问题现象:Node.js应用在流操作(如文件读取、网络请求)时突然崩溃,无错误提示。
原因分析:流操作未附加错误处理程序(error事件),导致异常未被捕获。
解决方法:
error事件监听:const fs = require('fs');
const readStream = fs.createReadStream('file.txt');
readStream.on('error', (err) => {
console.error('Stream error:', err);
});