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!

相关推荐
cpolar技术支持8 小时前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
wordbaby8 小时前
企业级后台管理系统路由设计与最佳实践指南
前端
胡志辉的博客8 小时前
【完全开源】IP 纯净度检测 可一键部署到自己的CF
前端·javascript·chrome·ip·chromium
Hilaku9 小时前
作为面试官,我最怕遇到什么样的候选人?
前端·javascript·程序员
TiDi9 小时前
Pinia优化重复请求
前端
web3d5209 小时前
01-用 Leafletjs 10 分钟搭一张水利一张图(Vue3 + Vite 实战)
前端·javascript
晚安日记wanna9 小时前
Vue2 的 defineProperty 差在哪四层追问筛掉九成候选人
前端·vue.js·面试
TiDi9 小时前
吸顶导航交互实现
前端
kisshyshy10 小时前
从Props透传到自定义Hook:系统梳理React跨层级通信与逻辑复用
前端·架构·代码规范
yume_sibai10 小时前
05-Flutter实战项目
前端·flutter