Ubuntu上Node.js版本冲突的排查与修复
一、快速定位冲突来源
which -a node && which -a npmreadlink -f $(which node)、readlink -f $(which npm)type -a node、type -a npm二、标准修复流程(按影响范围从大到小)
方案A 使用 NVM 统一管理版本(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bashexport NVM_DIR="$HOME/.nvm"; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"nvm install --lts、nvm install 18、nvm use 18、nvm alias default 18node -v、npm -v、which node(应指向 ~/.nvm/…)方案B 仅保留一种系统级安装并清理其余
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt-get install -y nodejssudo apt update && sudo apt install -y nodejs npmsudo apt purge -y nodejs npm nodejs-legacysudo rm -f /usr/local/bin/{node,npm}sudo ln -sfn /usr/bin/node /usr/local/bin/nodesudo ln -sfn /usr/bin/npm /usr/local/bin/npmnode -v、npm -v、which node(应指向 /usr/bin)三、常见症状与对应处理
node -v 与 nodejs --version 显示不同版本
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}~/.bashrc、~/.zshrc 等),或执行 source ~/.bashrc 使配置生效。四、长期治理与协作建议
{ "engines": { "node": "18.x" } }echo "18" > .nvmrc,进入项目后执行 nvm use(或配合 direnv 自动加载)。FROM node:18,在容器内 npm install && npm start