nvm 安装pnpm的异常解决

关于nvm

如果你是用nvm来管理node版本,正常情况下你的nvm文件夹下是有多个node版本的,像这样:

一般我们通过nvm ls命令就可以查到当前系统中安装的node版本,如果是要切换node版本就用nvm use 18.19.0类似这样的命令。

这里加一个知识点,记住,后面要考。

node的环境变量

现在问题来了,我要安装pnpm,但pnpm只能安装在18.12以上版本,否则它会提示这个:

arduino 复制代码
This version of pnpm requires at least Node.js v18.12

安装pnpm

首先你要切到node版本v18.12以上,然后全局安装就好了:

复制代码
npm install -g pnpm

通过pnpm -v检查一下是否安装成功。

遇到的问题

正常情况下按上述步骤我是可以用的,结果安装失败,我的环境变量配置的是c:\Program Files\nodejs\node_global\node_modules,但我在安装pnpm时npm install -g pnpm总是安装在这个位置D:\Program Files\nodejs\node_global,通过AI找了下原因,原来是由于环境变量的配置和 npm 的全局安装路径设置之间存在冲突或不一致导致的。一般来说,npm 会根据 npm config 中的配置来决定全局包的安装位置。你可以通过以下步骤检查和修正这个问题:

1、检查 npm 的配置:使用以下命令查看当前的全局安装路径:

arduino 复制代码
npm config get prefix

结果显示的是 D:\Program Files\nodejs\node_global,说明 npm 的全局安装路径被设置为该位置。你可以通过以下命令修改它:

swift 复制代码
npm config set prefix "C:\Program Files\nodejs\node_global"

2、检查环境变量 :在 Windows 中,你的环境变量 PATH 中应该包含正确的 Node.js 和 npm 安装路径,确保 npm 可以从正确的目录找到全局包。可以检查下 PATH 变量是否有多个 Node.js 相关路径。

3、重新安装pnpm : 在更新了 npm config 之后,再次尝试安装 pnpm:

复制代码
npm install -g pnpm

4、确认路径: 安装完成后,可以通过 npm list -g pnpm 来确认 pnpm 是否正确安装在你期望的目录。

新的问题

现在pnpm已经安装在了C:\Program Files\nodejs\node_global下面,但是我在用pnpm i命令时,仍然提示:

ini 复制代码
pnpm i pnpm : 无法加载文件 C:\Program Files\nodejs\node_global\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。

这个错误是因为 PowerShell 的执行策略(Execution Policy)默认情况下不允许运行脚本,特别是未签名的脚本。你可以通过修改 PowerShell 的执行策略来允许脚本的运行。

我看了一眼vscode,果然新开的控制台是powershell,来吧,办它!

解决步骤

1、打开 PowerShell 以管理员身份

  • 在 Windows 开始菜单中,搜索 "PowerShell"。

  • 右键点击 "Windows PowerShell",选择 "以管理员身份运行"。

2、检查当前执行策略:在 PowerShell 中输入以下命令,查看当前的执行策略:

sql 复制代码
Get-ExecutionPolicy

如果返回值是 Restricted,表示不允许执行任何脚本。

3、修改执行策略

将执行策略更改为 RemoteSigned ByPass,这两者允许执行本地脚本,并且只有从互联网下载的脚本需要签名。运行以下命令:

javascript 复制代码
Set-ExecutionPolicy RemoteSigned

或者:

javascript 复制代码
Set-ExecutionPolicy ByPass

选择 RemoteSigned 是较为安全的选择,它允许本地脚本执行,但需要从网上下载的脚本进行签名。

4、确认更改

执行该命令时,会提示确认更改执行策略,输入 Y 并按回车确认。

5、重新运行 pnpm 命令

修改执行策略后,关闭 PowerShell 窗口并重新打开一个新的 PowerShell 窗口。然后,再次尝试运行 pnpm i 命令:

css 复制代码
pnpm i

这下终于丝滑了,顺利下载依赖,nice!

相关推荐
四岁半儿1 小时前
常用css
前端·css
你的人类朋友2 小时前
说说git的变基
前端·git·后端
姑苏洛言2 小时前
网页作品惊艳亮相!这个浪浪山小妖怪网站太治愈了!
前端
Jerry2 小时前
Compose 从 View 系统迁移
前端
GIS之路2 小时前
2025年 两院院士 增选有效候选人名单公布
前端
四岁半儿2 小时前
vue,H5车牌弹框定制键盘包括新能源车牌
前端·vue.js
烛阴3 小时前
告别繁琐的类型注解:TypeScript 类型推断完全指南
前端·javascript·typescript
gnip3 小时前
工程项目中.env 文件原理
前端·javascript
JefferyXZF3 小时前
Next.js Server Actions 详解: 无缝衔接前后端的革命性技术(八)
前端·全栈·next.js