在部署到AWS时,我得到了以下纱线错误

error fs-extra@7.0.1: The engine "node" is incompatible with this module. Expected version ">=6 <7 || >=8". Got "7.0.0"

你知道怎么解决吗?

如果我在package.json中指定引擎,这将奏效吗

{ 
  "engines" : { 
    "node" : ">=8.0.0" 
  }
}

当前回答

很多答案说设置标志来忽略版本错误。

更好的选择是使用它作为提醒,将您的节点版本更新到您想要安装的包所支持的最新版本。

nvm install 16.16.0  # download & install locally on your system
nvm use 16.16.0      # update current project's .nvmrc file

注意,第二个命令将更新您的本地.nvmrc,该命令指定每个项目节点的版本。

节点生态系统更新很快,即使是“长期支持”(LTS)版本也会在大约3年后停止获得支持。使用此页面查看最新的LTS发布版本,并从错误消息中确保它与正在安装的包所期望的节点版本匹配。

其他回答

你可以试着忽略引擎:

$ yarn install—忽略引擎

OR

$ yarn global添加<你的应用>—忽略引擎

通过运行以下命令,你可以看到所有你可以忽略的内容:

$ yarn help | grep -- --ignore

--ignore-scripts     don't run lifecycle scripts
--ignore-platform    ignore platform checks
--ignore-engines     ignore engines check
--ignore-optional    ignore optional dependencies

一个解决方案,就是一个黑客可以

yarn config set ignore-engines true

然而,如果你想要一个永久的解决方案是:

删除node_modules/, package-lock。Json & yarn.lock 再次运行yarn install或NPM I。

对我来说,有效的方法是将Node更新到最新版本。根据您的操作系统选择任何教程。

升级Node.js到最新版本

我现在发现了这个问题,用一个旧代码,然而,我解决了它: 纱升级

这比表面上看起来更有问题。

如果您包含一个需要节点6的模块,但您有其他使用节点11的模块,您将得到这个错误!

当你使用nom/yarn/等第三方模块时,这是有问题的。要安装,因为如果不做git fork,你就无法访问这些包回购。

在我的例子中,我使用yarn工作区和包中的一些模块。工作区中的Json文件可能需要foo 1.0,而其他文件则需要foo 2.0, 1.0版本可能需要节点6,2.0版本可能需要节点14。

我发现的唯一解决方案是使用——ignore-engines,尽管这显然是其他人发布的——这并不能解决问题,只是忽略它,尽管可能会导致任何问题(节点6的代码可能无法在节点14上运行!)