yarn insntall 报错,显示 @achrinza/node-ipc@9.2.2 不支持现在的node版本

最近执行yarn install 时,突然遇到这样一个段报错

error @achrinza/node-ipc@9.2.2: The engine "node" is incompatible with this module. Expected version "8 || 10 || 12 || 14 || 16 || 17". Got "18.10.0"
error Found incompatible module.

问题描述的很清楚,@achrinza/node-ipc 不支持现在的node版本18.10.0,确切的说是除了它指定的 8 || 10 || 12 || 14 || 16 || 17 这些版本外,其他的node版本都不支持。

处理办法网上也有很多,例如:
1、将自己的node版本降低的插件包指定的版本上 (不建议 降版本
2、直接执行 yarn config set ignore-engines true (不建议
3、更新**@achrinza/node-ipc** 到一个新的版本,让它支持 现在的node版本 (强烈支持)

办法很好,但是都没有具体执行步骤,这里我简单完善一下。

1、更改node版本 (不建议)

首先声明一下,我其实不建议更改node版本的,大家不可能只有一个开发项目,既然目前使用这个node版本,证明是你目前需要的,盲目的更换 node版本治标不治本

但是随着技术的更新换代,node版本 也确实需要对应的升级,所以我这里讲 node版本更换,更多的是 为了 升级去使用,而不是为了 @achrinza/node-ipc 去降级

安装 nvm

现在如果大家还是通过删除node,然后下载对应node,实现变化版本的话,那么就需要好好看一下了。

至于知道nvm ,或者 已经再使用的小伙伴,可以跳过 这里。

nvm 是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。

使用nvm 随意更换 node版本

因为早前我详细讲过nvm的安装,以及使用,所以这里就不一一的写了,大家可以通过上边链接,直接看详细内容

nvm 常用语法
//查看node的所有的版本
nvm ls-remote

//安装node指定版本
nvm install 版本号

//查看本地node的所有版本
nvm list

//切换到指定的node版本
nvm use 10.xx.xx

//卸载指定的node版本
nvm uninstall 版本号

//安装最新的node稳定版本
nvm install --lts

// 设置默认node版本
nvm alias default vxx.xx.xx


2、yarn config set ignore-engines true (不建议)

这个配置项的作用是告诉 Yarn 在安装依赖时忽略模块的引擎版本限制,在依赖包的package.json文件中有 engines 属性,它对 node的版本做了限制

yarn config set ignore-engines true 

这样虽然解决了问题,但是太过于强硬,人家既然做了限制,就有一定原因,现在直接忽略掉限制,肯存在出现其他问题的可能,因此不建议这么干。

3、更新@achrinza/node-ipc

既然**@achrinza/node-ipc** 的 9.2.2 不支持现在的node版本,那么它是否有其他版本支持 高版本的node呢?

大家可以去npm网站 查看@achrinza/node-ipc所有版本~

在这里插入图片描述

果然 @achrinza/node-ipc 有着非常多的版本,既然 9.2.2 版本不支持。那么咱们就找比它高的,这里 9.2.9的下载量非常多,我们就看一下它 是否支持高版本node

不负众望,9.2.9版本确实支持目前大多数的node,那我们就去下载它
在这里插入图片描述

安装@achrinza/node-ipc@9.2.9

这里的安装也需要注意一个细节,大家不要直接错误的执行,我们需要将合适的版本,写入resolutions 里才可以

错误的下载
// 这是错误的方法
yarn add @achrinza/node-ipc@9.2.9  --save
正确方式

我们项目中,肯定都有 package.json 文件,我们找到 resolutions,如果没有可以直接 添加

// 这只是一个案例。方便理解 resolutions 所在位置,找到它 添加 @achrinza/node-ipc
{
  "name": "my-project",
  "version": "1.1.0",
  "scripts": {
    "dev": "vue-cli-service serve --mode dev --open",
    "build": "vue-cli-service build --mode test"
    ....
  },
  "dependencies": {
   ....
    "sass": "1.32.8",
    "sass-loader": "8.0.2",
    "vue": "^2.6.11",
    "vue-router": "3.3.1"
....
  },
  "devDependencies": {
  ....
    "address": "^1.1.2",
    "eruda": "^2.5.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2"
....
  },
  // 这是重点,这里添加  @achrinza/node-ipc
  "resolutions": {
    "@achrinza/node-ipc": "9.2.9"
  },
....
}

resolutions 是一个用于解决依赖项冲突的 npm 特殊字段。在某些情况下,项目依赖项可能需要不同的版本,而这些版本之间可能存在冲突。

这时候,可以使用 resolutions 字段来指定应该使用哪个版本,以解决这些冲突

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值