yarn的安装和使用(包括常见问题)

Yarn 是一个快速、可靠、安全的依赖管理工具,由 Facebook、Google、Exponent 和 Tilde 共同开发。它能够帮助你更高效地管理项目的依赖。以下是在不同操作系统上安装和使用 Yarn 的方法。

在 macOS 上安装 Yarn

通过 Homebrew 安装:

  1. 打开终端。
  2. 如果你还没有安装 Homebrew,先安装它:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. 使用 Homebrew 安装 Yarn:brew install yarn

通过 npm 安装:

如果你已经安装了 Node.js 和 npm,你可以通过 npm 安装 Yarn:

  1. 打开终端。
  2. 输入命令:npm install -g yarn

在 Windows 上安装 Yarn

通过 Chocolatey 安装:

  1. 打开 PowerShell(以管理员身份)。
  2. 如果你还没有安装 Chocolatey,先按照其官方安装指南进行安装。
  3. 使用 Chocolatey 安装 Yarn:choco install yarn

通过 npm 安装:

如果你已经安装了 Node.js 和 npm,可以通过 npm 安装 Yarn:

  1. 打开命令提示符或 PowerShell。
  2. 输入命令:npm install -g yarn

在 Linux 上安装 Yarn

通过 Debian/Ubuntu 的 APT 包管理器安装:

  1. 打开终端。
  2. 配置 Yarn APT 仓库:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

  1. 更新 APT 索引并安装 Yarn:
sudo apt update && sudo apt install yarn

通过 npm 安装:

如果你已经安装了 Node.js 和 npm,可以通过 npm 安装 Yarn:

  1. 打开终端。
  2. 输入命令:npm install -g yarn

使用 Yarn

初始化新项目:

yarn init

这将引导你完成创建一个 package.json 文件的过程。

添加依赖:

yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]

这会将依赖添加到你的 package.jsonyarn.lock 文件中。

更新依赖:

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]

移除依赖:

yarn remove [package]

安装项目依赖:

yarn install

这将根据 package.jsonyarn.lock 文件安装所有依赖。

安装常见问题和解决方法

  1. 报错信息:command not found: yarn
    • 解决方法:确保Yarn已经安装。如果未安装,根据官方文档进行安装。如果已安装,检查环境变量配置是否包含Yarn的安装路径。
  1. 报错信息:There appears to be trouble with your network connection. Retrying...
    • 解决方法:检查网络连接。尝试使用yarn config set network-timeout 100000来增加网络超时时间。
  1. 报错信息:error An unexpected error occurred: "EACCES: permission denied, open '...'"
    • 解决方法:避免使用sudo运行Yarn命令。检查文件或目录的权限,确保当前用户有足够的权限。
  1. 报错信息:error Couldn't find package "[package-name]" on the "npm" registry.
    • 解决方法:检查包名是否拼写正确。如果正确,可能是网络问题,尝试更换npm镜像源。
  1. 报错信息:error An unexpected error occurred: "ENOSPC: no space left on device, write"
    • 解决方法:检查磁盘空间,释放空间或清理node_modules文件夹和yarn cache clean
  1. 报错信息:warning Your current version of Yarn is out of date. Please upgrade to the latest version.
    • 解决方法:按照提示更新Yarn到最新版本,使用命令npm install -g yarn或根据官方文档的指引进行更新。
  1. 报错信息:error An unexpected error occurred: "EINTEGRITY: sha512-..."
    • 解决方法:通常由包的缓存损坏引起。运行yarn cache clean然后再次尝试安装。
  1. 报错信息:error [package-name]@version: The engine "node" is incompatible with this module. Expected version ">=x.x.x". Got "y.y.y"
    • 解决方法:升级或降级Node.js到兼容的版本。
  1. 报错信息:error Found incompatible module
    • 解决方法:检查项目的package.json文件中指定的依赖版本是否与已安装的Node.js版本兼容。
  1. 报错信息:warning [package-name] > [dependency-name]@version has unmet peer dependency [peer-dependency-name]@version.
    • 解决方法:手动安装未满足的peer依赖到项目中。
  1. 报错信息:error An unexpected error occurred: "EPERM: operation not permitted, unlink '...'"
    • 解决方法:运行命令提示符或终端以管理员身份,或检查是否有其他进程锁定了文件。
  1. 报错信息:error Couldn't find any versions for "[package-name]" that matches "x.x.x"
    • 解决方法:检查请求的版本号是否存在。如果存在,可能是网络问题或npm镜像源问题。
  1. 报错信息:warning Skipping preferred cache folder "[folder-path]" because it is not writable.
    • 解决方法:更改缓存文件夹的权限或指定一个新的缓存路径,使用yarn config set cache-folder [path]
  1. 报错信息:error Invalid version: "x.x.x"
    • 解决方法:检查package.json中指定的版本号格式是否正确。
  1. 报错信息:error Could not resolve dependency: [package-name]@[version] from the root project
    • 解决方法:确认依赖包的版本号是否正确,尝试清除Yarn缓存yarn cache clean并重新安装依赖。
  1. 报错信息:error Package "[package-name]" refers to a non-existing file '[...]'
    • 解决方法:检查package.json中指定的文件路径是否存在。如果是本地依赖,确保路径正确并且文件未被忽略。
  1. 报错信息:error Integrity check failed for "[package-name]" (computed integrity doesn't match our records, got "sha512-...")
    • 解决方法:这通常意味着包的缓存已损坏。运行yarn cache clean [package-name]清除指定包的缓存,然后重新安装。
  1. 报错信息:warning [package-name]@version: License should be a valid SPDX license expression
    • 解决方法:这是一个警告,不会阻止包的安装。检查package.json中的license字段,确保其值是一个有效的SPDX许可表达式。
  1. 报错信息:error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '...'"
    • 解决方法:确保在运行yarn install或相关命令之前,目标目录为空或不存在其他进程正在使用该目录。
  1. 报错信息:error [package-name]@version requires a peer of [peer-dependency-name]@version but none is installed. You must install peer dependencies yourself.
    • 解决方法:手动安装缺失的peer依赖。使用yarn add [peer-dependency-name]@version安装指定版本的peer依赖。
  1. 报错信息:error An unexpected error occurred: "ELOOP: too many symbolic links encountered, stat '...'"
    • 解决方法:检查是否存在循环符号链接。如果是在node_modules中,尝试删除node_modules目录和yarn.lock文件,然后重新运行yarn install
  1. 报错信息:error Couldn't publish package: "npm ERR! publish Failed PUT 403"
    • 解决方法:确保你有权限发布到npm仓库,并且包名没有被占用。如果是私有包,检查是否登录了正确的npm账户。
  1. 报错信息:error An unexpected error occurred: "Z_BUF_ERROR: zlib: unexpected end of file"
    • 解决方法:这可能是因为文件损坏或不完整。尝试清除Yarn和npm的缓存,使用yarn cache cleannpm cache clean --force
  1. 报错信息:error [package-name]@version: The engine "yarn" is incompatible with this module. Expected version ">=x.x.x". Got "y.y.y"
    • 解决方法:升级Yarn到兼容的版本。使用npm install -g yarn来更新Yarn。
  1. 报错信息:error An unexpected error occurred: "Failed to replace env in config: ${NPM_TOKEN}"
    • 解决方法:确保环境变量NPM_TOKEN已正确设置。如果在CI环境中,检查环境变量是否已正确传递给构建过程。

使用过程常见问题

  1. 报错信息:error Could not find package.json
    • 解决方法:确保你在项目根目录下运行Yarn命令,该目录应包含package.json文件。
  1. 报错信息:error An unexpected error occurred: "ENOENT: no such file or directory, open '...'"
    • 解决方法:检查报错信息中提到的文件或目录是否存在。如果是在执行特定命令时出现,尝试先运行yarn install
  1. 报错信息:error Your lockfile needs to be updated, but yarn was run with '--frozen-lockfile'.
    • 解决方法:在CI/CD环境中,确保yarn.lock文件是最新的。本地开发时,移除--frozen-lockfile参数,运行yarn install更新yarn.lock文件。
  1. 报错信息:warning package.json: No license field
    • 解决方法:在package.json文件中添加一个license字段。例如,"license": "MIT",以避免此警告。
  1. 报错信息:error An unexpected error occurred: "EACCES: permission denied, access '...'"
    • 解决方法:更改文件或目录的权限,使用chmod命令(Linux/macOS),或以管理员身份运行命令(Windows)。
  1. 报错信息:error Couldn't find the binary git
    • 解决方法:确保Git已安装并且添加到了环境变量中。可以通过在终端运行git --version来检查Git是否可用。
  1. 报错信息:error An unexpected error occurred: "ENOSPC: System limit for number of file watchers reached, watch '...'"
    • 解决方法:这通常发生在Linux系统上。可以通过运行echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p命令来增加文件监视器的数量限制。
  1. 报错信息:error network connection error. Retrying...
    • 解决方法:检查网络连接。如果网络正常,可能是npm仓库不稳定或被墙,尝试更换npm仓库源,例如使用淘宝的npm镜像。
  1. 报错信息:error An unexpected error occurred: "EPROTO: protocol error, symlink '...'"
    • 解决方法:这通常发生在Windows上,尝试以管理员身份运行命令提示符或PowerShell。
  1. 报错信息:error Missing script: "start"
    • 解决方法:在package.jsonscripts字段中添加缺失的脚本。例如,如果你想运行一个名为start的命令,确保package.json中包含"start": "node yourScript.js"
  1. 报错信息:error An unexpected error occurred: "Invalid version: \"x.x.x\""
    • 解决方法:检查package.json中的版本号是否遵循语义版本控制规范(semver)。正确的版本号格式为主版本号.次版本号.修订号
  1. 报错信息:error Couldn't find package "[package-name]" on the "npm" registry.
    • 解决方法:检查包名是否拼写正确。如果是私有包,确保你已登录(使用yarn login)并且有权限访问该包。
  1. 报错信息:error An unexpected error occurred: "EPERM: operation not permitted, unlink '...'"
    • 解决方法:尝试重新启动你的计算机。如果问题仍然存在,以管理员身份运行命令提示符或终端。
  1. 报错信息:error An unexpected error occurred: "EEXIST: file already exists, mkdir '...'"
    • 解决方法:删除已存在的目录或文件,或检查是否有其他进程正在使用该目录或文件。
  1. 报错信息:error An unexpected error occurred: "ENOTDIR: not a directory, scandir '...'"
    • 解决方法:确保指定的路径是一个目录而不是文件。如果路径正确,尝试删除并重新创建目录。
  1. 报错信息:error An unexpected error occurred: "EHOSTUNREACH: Host is unreachable, '...'."
    • 解决方法:这通常表明无法连接到指定的服务器。检查你的网络连接,确保没有防火墙或代理设置阻止了Yarn的请求。
  1. 报错信息:error An unexpected error occurred: "ETIMEDOUT: request to '...' timed out."
    • 解决方法:请求超时可能是由于网络连接慢或npm仓库服务器响应慢造成的。尝试更换网络连接,或使用yarn config set network-timeout 100000来增加超时时间。
  1. 报错信息:error [package-name]@version: The engine "node" is incompatible with this module. Expected version ">=x.x.x". Got "y.y.y"
    • 解决方法:这表明当前使用的Node.js版本与包要求的版本不兼容。升级或降级Node.js版本以满足包的要求。
  1. 报错信息:warning [package-name] > [dependency-name]@version: [dependency-name]@"version" is deprecated
    • 解决方法:这是一个警告,表示某个依赖已被废弃。尽量避免使用已废弃的依赖,或检查是否有更新的版本可用。
  1. 报错信息:error An unexpected error occurred: "EISDIR: illegal operation on a directory, read"
    • 解决方法:尝试删除node_modules目录和yarn.lock文件,然后重新运行yarn install
  1. 报错信息:error An unexpected error occurred: "SHA-1 for file ... does not match the expected value."
    • 解决方法:这可能是因为文件被损坏。尝试清除Yarn缓存yarn cache clean,然后重新运行yarn install
  1. 报错信息:error Invalid option "--optionName"
    • 解决方法:检查命令行中使用的选项是否正确。参考Yarn的官方文档来查找正确的选项。
  1. 报错信息:error package.json: Name contains illegal characters
    • 解决方法:确保package.json中的name字段只包含小写字母、数字、连字符(-)、下划线(_)和点(.),并且不以点或下划线开头。
  1. 报错信息:error An unexpected error occurred: "EAI_AGAIN: Temporary failure in name resolution."
    • 解决方法:这通常是DNS解析问题。检查网络设置,或尝试更换DNS服务器。
  1. 报错信息:error An unexpected error occurred: "ERR! code ELIFECYCLE"
    • 解决方法:这通常与npm脚本的执行失败有关。检查package.json中的scripts字段,确保相应的脚本可以正确执行。查看详细的错误日志来定位问题。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南方淮竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值