解决 Yarn 升级版本时出现的“connect ECONNREFUSED”错误

By | 最新修改:2024-08-17

什么是 Yarn

Yarn 是一款类似于 Npm 一样的 Node.js 包管理器,它专注于速度、安全性和一致性。

Yarn 包管理器是一种安全可靠方便快捷的 JavaScript/Node.js 代码分发和获取的工具,使用它可安装到来自全世界开发者开发出来的JS代码和工具。

使用 Yarn 可以获取与 Npm 一样的功能——安装 Node.js 软件包。

Yarn 与 Npm 不同的是,Yarn 可随时随意切换版本。

因为一些原因,放在 GitHub 的 Yarn 二进制文件访问有时会出现故障,从而升级 Yarn 时可能会出现“connect ECONNREFUSED”错误。本文给出解决方案

目前(2023-12) Yarn 的最新稳定版已经到了 4.x,以下语句将会把 Yarn 升级至 4.x 版本:

sudo yarn set version berry

关于安装 Node.js 最新稳定版本可参考本站文章:如何在 Ubuntu 上安装最新 LTS 版的 Node.js


安装和选择 Yarn 版本的几种方式

使用管理包管理器的工具 corepack 启用 Yarn

Corepack 是一个实验性工具,可帮助管理包管理器的版本。它为每个支持的包管理器公开二进制代理,当调用时,它将识别为当前项目配置的任何包管理器,如果需要透明地安装它,最后运行它而不需要明确的用户交互。

启用 corepack

Node.js v16.10 开始,corepack 随着 Node.js 安装包一起发行,所以只要安装有 Node.js 二进制文件就可以直接启用它:

# 启用 corepack
sudo corepack enable

激活一个新版本的 yarn

# 激活最新稳定版本
corepack prepare yarn@stable --activate

激活任意一个指定的 yarn 版本

# 激活 yarn 2+
corepack prepare yarn@2.2.2 --activate

选择 Yarn 版本

如果想要选择版本,可以使用以下语句:

# 该操作将覆盖 corepack 的行为
sudo yarn set version 2

解决 GitHub 无法下载 Yarn,出现“connect ECONNREFUSED”错误的解决方案

当前好像没有出现此问题了,特别是通过 corepack 安装的 Yarn

升级 Yarn 时可能会出现以下的错误:

username@DESKTOP-R2DJAN7-wsl:~$ sudo yarn set version berry                                                                                  
Resolving berry to a url...                                                                                                                
Downloading https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js...                                                 
error An unexpected error occurred: "https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js: connect ECONNREFUSED 0.0.
0.0:443".                                                                                                                                  
info If you think this is a bug, please open a bug report with the information provided in "/home/username/yarn-error.log".                  
info Visit https://yarnpkg.com/en/docs/cli/policies for documentation about this command.

解决方案:

# 将 {porxy_host} 和 {proxy_port} 分别替换为网络代理的服务器和端口
yarn config set proxy http://{proxy_host}:{proxy_port}
yarn config set https-proxy http://{proxy_host}:{proxy_port}

比如,作者本地局域网中有网络代理服务器 192.168.1.101,端口为 8118,那么,上面的设置最终会变成:

yarn config set proxy http://192.168.1.101:8118
yarn config set https-proxy http://192.168.1.101:8118

从 Socks5 到 HTTP 网络代理的转换配置方式请参阅本站的其他文章: Privoxy 将 Socks5 转换成 HTTP 以及 Shell 设置 HTTP 代理


Yarn 升级到最新版本

# 进入当前用户的家目录
cd ~
yarn set version berry
# 或者,在需要管理员权限时
sudo yarn set version berry

执行结果:

Resolving berry to a url...
Downloading https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js...
Saving it into /home/username/.yarn/releases/yarn-berry.cjs...
Updating /home/username/.yarnrc.yml...
Done!

查看升级后的版本:

username@DESKTOP-R2DJAN7-wsl:~$ yarn -v
4.0.2

成了!



程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com