首页·报错信息

yarn 1 · 构建与类型

报错原文

The engine "node" is incompatible with this module. Expected version ">=20"

这是什么意思

你要装的包在 package.json 的 engines 字段里声明了它需要的 node 版本,而你当前用的版本落在这个范围之外。后面跟着的 Expected 和 Got 把要求和你的版本并排列出,看这两行就够了——如果只有 CI 上报这个,那就是它的 node 版本和你机器上的不一样。用 nvm install 20 && nvm use 20 升上去是正面的答案,并把同一个版本写进 .nvmrc 和 CI 配置,下次才不会再岔开。yarn 的 --ignore-engines 能硬闯过去,但它只是抹掉警告,并不制造兼容性:那个包一旦用了更新的语法,就改成在运行时以语法错误炸掉。npm 把同样的情形报成 EBADENGINE 警告,默认并不阻止安装。

怎么修

nvm install 20 && nvm use 20
来自
yarn 1
构建与类型
10

构建阶段的错误是工具在运行之前就先拒绝了,所以它们出现的那一刻并不弄坏什么——但它们问你两个问题:你要把类型或路径改成和真实结构一致,还是用一个 as any、一条抑制注释让那一行过去?也正是在这里,那些只在你自己机器上成立的事情——大小写、扩展名、环境变量——第一次显形。

怎么读报错

  • 从第一行往下读。越往下越是工具内部的事,起因通常写在最上面。
  • 有文件名和行号就从那里查——不是栈顶那一帧,而是最上面那条提到你自己写的文件的行。
  • 把报错原文照样去搜,但先去掉你自己的路径和变量名,正是那些让搜索匹配不上。
  • 同一种情况在不同版本里措辞不同。结果不对头,就把版本号一起加进查询。
  • 粘贴修法之前,先确认它会丢掉什么。这里面有些是不能撤回的。

常见问题

Q. “The engine "node" is incompatible with this module. Expected version ">=20"” 是什么意思?

你要装的包在 package.json 的 engines 字段里声明了它需要的 node 版本,而你当前用的版本落在这个范围之外。后面跟着的 Expected 和 Got 把要求和你的版本并排列出,看这两行就够了——如果只有 CI 上报这个,那就是它的 node 版本和你机器上的不一样。用 nvm install 20 && nvm use 20 升上去是正面的答案,并把同一个版本写进 .nvmrc 和 CI 配置,下次才不会再岔开。yarn 的 --ignore-engines 能硬闯过去,但它只是抹掉警告,并不制造兼容性:那个包一旦用了更新的语法,就改成在运行时以语法错误炸掉。npm 把同样的情形报成 EBADENGINE 警告,默认并不阻止安装。

Q. 怎么修?

nvm install 20 && nvm use 20 —— 执行前先看上面的说明,确认这条命令会丢掉什么。

Q. 这是哪个工具报的?

yarn 1。它属于构建与类型,报错原文有 11 个词。

相关报错