在Ubuntu 20.04(WSL)安装Node 16后生效版本为Node 14如何排查
问题排查点
- 核查当前node二进制的实际路径
执行which node查看当前调用的node位置,再执行dpkg -L nodejs | grep bin/node查看apt安装的Node16的二进制路径,直接调用apt安装路径下的node核查版本:
如果该命令返回v16.x,说明是PATH优先级问题,有其他位置的node排在系统路径前。/usr/bin/node -v - 排查Node版本管理工具残留
执行command -v nvm || command -v n || command -v fnm核查是否安装过nvm、n、fnm这类Node版本管理工具,这类工具管理的Node包不受apt管控,优先级默认高于系统级安装的Node,会直接覆盖版本显示。 - 核查软链接有效性
执行ls -l $(which node)查看软链接指向是否为apt安装的Node16二进制路径,如果指向旧版路径,执行以下命令重置软链接:sudo ln -sf /usr/bin/node $(which node) - 排查WSL Windows路径继承问题
WSL默认会加载Windows系统的PATH环境变量,如果Windows本地安装了Node14,会被WSL优先调用。执行which node | grep /mnt/c如果有输出,说明调用的是Windows下的Node,可修改WSL配置关闭PATH继承:
编辑/etc/wsl.conf添加如下内容:
保存后在Windows终端执行[interop] appendWindowsPath = falsewsl --shutdown重启WSL实例即可生效。
Node14版本的常见来源
- 此前通过nvm、n等版本管理工具安装的用户级Node包,未被apt卸载逻辑识别
- 手动编译安装到
/usr/local/bin、~/.local/bin等非apt管理目录下的Node14二进制文件 - WSL继承的Windows系统中已安装的Node14
- 旧版Node卸载时未被清理的残留软链接,指向了未删除的Node14二进制文件
内容的提问来源于stack exchange,提问作者ymoreau
相关产品推荐
相关产品推荐

