使用nvm安装node12 以及对应的NPM6.14.16

执行脚本:脚本包括下载文件和创建缓存目录

cpp 复制代码
@echo off
echo === 修复 nvm 安装 Node.js 12.22.12 ===
echo.

REM 1. 清理旧版本
echo 1. 清理旧版本...
nvm uninstall 12.22.12
nvm root clear

REM 2. 创建缓存目录
echo 2. 创建缓存目录...
if not exist "%APPDATA%\nvm-cache" mkdir "%APPDATA%\nvm-cache"

REM 3. 提示用户手动下载文件
echo 3. 请手动下载以下文件到 %APPDATA%\nvm-cache\ 目录:
echo    - https://nodejs.org/dist/v12.22.12/node-v12.22.12-win-x64.zip
echo    - https://github.com/npm/cli/archive/v6.14.16.zip
echo.
pause

REM 4. 检查文件是否存在
echo 4. 检查文件...
if not exist "%APPDATA%\nvm-cache\node-v12.22.12-win-x64.zip" (
    echo ❌ node-v12.22.12-win-x64.zip 不存在
    goto :error
)
if not exist "%APPDATA%\nvm-cache\npm-v6.14.16.zip" (
    echo ❌ npm-v6.14.16.zip 不存在
    goto :error
)

REM 5. 离线安装
echo 5. 开始离线安装...
nvm install 12.22.12 --insecure

if errorlevel 1 (
    echo ❌ 安装失败
    goto :error
) else (
    echo ✅ 安装成功!
    nvm use 12.22.12
    node --version
    npm --version
)

pause
exit /b 0

:error
echo 安装失败,请检查网络和文件权限
pause

如果不行报错如下:继续执行:

方案一:使用正确的命令安装 npm

不要替换根目录的 npm.cmd,而是更新 node_modules/npm

复制代码
# 进入 Node.js 目录
cd D:\softWare\nvm\v12.22.12

# 方法1:使用 -g 参数全局安装
.\npm.cmd install -g npm@6.14.16

# 方法2:或者使用 npm 的自我更新命令
.\npm.cmd install npm@6.14.16 -g

方案二:先卸载当前 npm 再安装

复制代码
复制代码
# 进入 Node.js 目录
cd D:\softWare\nvm\v12.22.12

# 1. 先查看当前 npm 版本
.\npm.cmd --version

# 2. 如果版本不是 6.14.16,使用 --force 参数强制安装
.\npm.cmd install npm@6.14.16 --force

方案三:手动替换 npm 文件(最可靠)

既然您已经手动安装了 Node.js 12.22.12,我来告诉您如何手动安装 npm 6.14.16:

步骤1:清理旧的 npm 模块

复制代码
复制代码
# 进入 Node.js 目录
cd D:\softWare\nvm\v12.22.12

# 删除现有的 npm 模块
rmdir /s node_modules\npm

# 或者如果上面失败,手动删除
# 1. 打开 D:\softWare\nvm\v12.22.12\node_modules\
# 2. 删除 npm 文件夹

步骤2:手动下载 npm 6.14.16

复制代码
# 方法A:使用 Node.js 自带的 npm 下载
.\npm.cmd install npm@6.14.16 --no-save

# 方法B:如果上面失败,手动下载
# 1. 访问:https://registry.npmjs.org/npm/-/npm-6.14.16.tgz
# 2. 下载 npm-6.14.16.tgz
# 3. 解压到 D:\softWare\nvm\v12.22.12\node_modules\npm

步骤3:创建正确的 npm 链接

如果您使用手动下载的方法,需要创建链接:

复制代码
# 进入 Node.js 目录
cd D:\softWare\nvm\v12.22.12

# 如果手动解压了 npm,创建符号链接
# (以管理员身份运行命令提示符)
mklink node_modules\npm npm-6.14.16

方案四:使用 npx 安装

复制代码
# 进入 Node.js 目录
cd D:\softWare\nvm\v12.22.12

# 使用 npx 安装特定版本的 npm
.\npx.cmd npm@6.14.16 install -g npm@6.14.16

方案五:使用 Windows 的替代方法

复制代码
@echo off
REM 保存为 install-npm.bat,以管理员身份运行
cd /d D:\softWare\nvm\v12.22.12

echo 正在备份原版 npm...
if exist npm.cmd.bak del npm.cmd.bak
if exist npm.cmd copy npm.cmd npm.cmd.bak

echo 正在安装 npm 6.14.16...
call npm.cmd install npm@6.14.16 --global --force

if errorlevel 1 (
    echo 安装失败,恢复备份...
    if exist npm.cmd.bak copy npm.cmd.bak npm.cmd
    echo 请尝试其他方法
) else (
    echo 安装成功!
    .\npm.cmd --version
)

pause

最简单有效的解决方案

根据您的具体情况,我推荐这个一步到位的方案:

复制代码
复制代码
# 1. 以管理员身份打开命令提示符
# 2. 进入 nvm 目录
cd D:\softWare\nvm\v12.22.12

# 3. 执行这个修复命令
node node_modules\npm\bin\npm-cli.js install npm@6.14.16 -g --force

这个命令的优点是:

  • 使用 node 直接运行 npm 的 JavaScript 代码

  • 避免通过 npm.cmd 包装器

  • 使用 --force强制安装

  • 使用 -g全局安装

🔧 手动安装的完整步骤

如果上述方法都不行,请按照这个完整的步骤:

复制代码
# 步骤1:备份当前 npm
cd D:\softWare\nvm\v12.22.12
copy npm.cmd npm.cmd.backup
copy npm npm.backup
copy npm.ps1 npm.ps1.backup

# 步骤2:下载 npm 6.14.16
# 在浏览器中打开:https://registry.npmjs.org/npm/-/npm-6.14.16.tgz
# 下载并解压到临时文件夹,比如 C:\temp\npm-6.14.16

# 步骤3:复制文件
xcopy /E /Y C:\temp\npm-6.14.16\package D:\softWare\nvm\v12.22.12\node_modules\npm\

# 步骤4:复制可执行文件
copy C:\temp\npm-6.14.16\package\bin\npm D:\softWare\nvm\v12.22.12\npm
copy C:\temp\npm-6.14.16\package\bin\npm.cmd D:\softWare\nvm\v12.22.12\npm.cmd
copy C:\temp\npm-6.14.16\package\bin\npm.ps1 D:\softWare\nvm\v12.22.12\npm.ps1

# 步骤5:验证
.\npm.cmd --version
# 应该显示:6.14.16

📁 手动下载链接

您可以直接下载这些文件:

  1. Node.js 12.22.12 自带 npmhttps://nodejs.org/dist/v12.22.12/win-x64/node.exe

  2. npm 6.14.16 独立包https://registry.npmjs.org/npm/-/npm-6.14.16.tgz

  3. npm Windows 可执行文件:从上面的 tgz 包中提取

✅ 最终验证

安装完成后,验证是否正确:

复制代码
# 进入 nvm 目录
cd D:\softWare\nvm\v12.22.12

# 验证版本
node --version
# 应该显示:v12.22.12

npm --version
# 应该显示:6.14.16

# 测试 npm 功能
npm init -y
npm install lodash

推荐方案

对于您的情况,最简单的是:

  1. 以管理员身份打开新的命令提示符

  2. 运行这个命令:

    cd D:\softWare\nvm\v12.22.12
    node node_modules\npm\bin\npm-cli.js install npm@6.14.16 -g --force

  3. 如果还不行,运行这个修复脚本:

    @echo off
    cd /d D:\softWare\nvm\v12.22.12
    echo 正在修复 npm 安装...
    del npm.cmd 2>nul
    del npm 2>nul
    del npm.ps1 2>nul
    rmdir /s /q node_modules\npm 2>nul
    echo 重新安装 npm 6.14.16...
    call node node_modules\npm\bin\npm-cli.js install npm@6.14.16
    echo 完成!
    pause

保存为 fix-npm.bat,以管理员身份运行。

🔄 如果还是不行

如果以上方法都失败,最后的手段是:

复制代码
# 1. 完全删除当前 Node.js 12.22.12
rmdir /s D:\softWare\nvm\v12.22.12

# 2. 重新解压 Node.js
# 3. 这次不要运行 npm install,直接使用

记住:Node.js 12.22.12 自带一个 npm 版本,如果不要求必须是 6.14.16,可以直接使用自带的版本:

复制代码
# 查看自带的 npm 版本
cd D:\softWare\nvm\v12.22.12
.\npm.cmd --version
# 如果版本可用,就不需要更新

总结 :您遇到的错误是因为 npm 在尝试自我更新时遇到了权限问题。最简单的解决方案是使用 node node_modules\npm\bin\npm-cli.js install npm@6.14.16 -g --force命令,绕过 npm.cmd 直接运行。

相关推荐
zhensherlock2 小时前
Protocol Launcher 系列:Mail Assistant 轻松发送 HTML 邮件
前端·javascript·typescript·node.js·html·github·js
旺王雪饼 www3 小时前
《Express框架深度解析:从基础入门到高级实践与项目架构》
前端·node.js·express
星光不问赶路人21 小时前
Node.js 如何判断入口文件:从 require.main 到 ES Module 实现
前端·node.js
网络点点滴1 天前
Node.js 中阻塞、非阻塞及异步特性
node.js
netkiller-BG7NYT1 天前
yoloutils - Openclaw Agent Skill
前端·webpack·node.js
cypking1 天前
npm 依赖包版本扫描提示插件Version Lens
前端·npm·node.js
研究点啥好呢2 天前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
孟祥_成都2 天前
复刻字节 AI 开发流:实践 Node.js 通用脚手架
前端·人工智能·node.js