如何解决 Node.js 10.13.0 与 npm 9.x 版本不兼容问题

本文详解在使用 nvm 管理 node.js 多版本时,因 npm 版本过高(如 v9.8.0)与旧版 node(如 v10.13.0)冲突导致命令崩溃的解决方案,核心是降级 npm 至兼容版本 v6.14.12。

当你通过 nvm 切换到 Node.js v10.13.0 后,却仍遇到 npm -v 报错、甚至直接抛出 SyntaxError: Unexpected token .(源于 npm?.config.loaded 可选链语法),这说明当前全局安装的 npm 版本(如 v9.8.0)已不再支持 Node.js 10.x——该语法仅在 Node.js ≥14 中被完全支持。

Node.js 官方明确标注:npm v9 要求 Node.js ≥14.17.0;而 Node.js v10.13.0 的官方推荐配套 npm 版本是 v6.14.12(即 npm v6 的最后一个 LTS 兼容版本)。因此,必须主动降级 npm:

正确操作步骤如下:

  1. 确认当前 Node 版本:

    nvm current
    # 应输出:v10.13.0
  2. 卸载当前不兼容的 npm(可选,但推荐清理):

    npm uninstall -g npm
  3. 安装兼容版本 npm v6.14.12

    npm install -g npm@6.14.12
  4. 验证修复结果:

    npm -v  # 应输出:6.14.12
    node -v # 应输出:v10.13.0
    npm list -g npm --depth=0  # 确认全局 npm 版本

⚠️ 重要注意事项:

  • 不要使用 nvm install-latest-npm 或 nvm reinstall-packages ——它们会默认安装最新 npm,反而加剧冲突;
  • 若执行 npm install -g npm@6.14.12 报“权限拒绝”,请在管理员模式下运行终端(Windows)或加 sudo(macOS/Linux);
  • npm v6 仍支持 package-lock.json、语义化版本解析及基础脚本执行,完全满足 Node.js 10 项目构建需求;
  • 后续切换至 Node.js ≥14 时,再通过 npm install -g npm@latest 升级即可,nvm 本身不管理 npm 版本,需手动协同。

? 延伸建议:
为避免团队协作中出现类似问题,可在项目根目录添加 .nvmrc 文件指定 Node 版本(10.13.0),并配合 package.json 的 "engines" 字段声明兼容 npm 范围(如 "npm": "6.x"),再结合 CI/CD 配置校验,实现环境一致性保障。