引擎节点;与此模块不兼容

在部署到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"
}
}
328889 次浏览

你可以试着忽略引擎:

$ yarn install --ignore-engines

$ yarn global add <your app> --ignore-engines

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

$ 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

你需要升级你的节点版本。

我也遇到了同样的问题。

如果你使用家酿运行:

brew update  # This updates Homebrew to latest version
brew upgrade node

如果你使用nvm运行:

nvm current node -v  # Checks your current version
nvm install <version>  # Example: nvm install 12.14.1

对于上述步骤,转到https://nodejs.org/en/download/

获取一个满足错误中的条件的版本,最新的版本应该可以工作。

更详细的演练:https://flaviocopes.com/how-to-update-node/

我的问题是解决yarn --ignore-engines,但我不确定为什么和如何。

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

yarn config set ignore-engines true

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

  1. 删除node_modules/, package-lock。json,yarn.lock
  2. 再次运行yarn install或NPM I。

在安装包时将--ignore-engines添加到后缀,如下所示:

yarn add <package_name> --ignore-engines

我现在发现了这个问题,用旧代码,但是,我用: 纱升级< / p >

sudo npm cache clean -f
sudo npm install -g n
sudo n 10.22.1
node -v => Should be on 10.22.1

请输入您需要的节点版本,我刚刚以10.22.1为例

我在Ubuntu上也遇到了类似的问题,即使在最新版本安装了很多次Nodejs之后,它总是显示相同的旧Nodejs版本;我发现它每次都在安装类似的旧Debian包,甚至在执行apt-get update命令之后也是如此

最后,我通过清除旧的nodeJs,然后添加不同的存储库源代码,并按照如下方式正常安装新发行版的nodeJs:

sudo apt-get purge --auto-remove nodejs
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

请在下面找到所有NodeJs分布列表 https://github.com/nodesource/distributions/blob/master/README.md < / p >

您可能会找到其他方法进行更新,但这个方法对我很有用。

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

升级Node.js到最新版本

我建议按照错误消息说的去做,检查你的Node.js版本(node -v)。升级Node.js最简单的方法是使用n版本管理器:

$ npm install -g n

然后安装Node的最新(n latest)或LTS (n lts)版本。

你可以试试:

  1. 打开package.json
  2. <李>找到 李"engines": { "node": "14.x" } < / >
  3. change 14.x ->>=14.x

我不建议使用这个:

% yarn install --ignore-engines

这是在回避问题,而不是解决问题 一个可能的解决方案是将你的节点更新为version > 8.0.

% brew upgrade node

或者您可以尝试使用nodenv安装多个版本的node,以防其他项目需要它们。

% brew install nodenv
% nodenv init
# Load nodenv automatically by appending
# the following to ~/.zshrc:


eval "$(nodenv init -)"
% nodenv install 6.0.0 //or some other version

刚刚发现我不仅需要升级node,而且还需要安装它。

将节点升级到最新版本:

brew upgrade node

这将安装node的特定版本:

nvm install 17.0.0

将Node.js更新到最新版本。

https://nodejs.org/en/download/

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

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

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

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

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

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

一个更好的选择是使用它作为提醒更新节点版本到最近的东西,并由你想安装的包支持。

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发布版本,并从错误消息中确保它与你正在安装的包所期望的节点版本匹配。

升级您的节点版本,此问题将得到解决

有时您无法升级Node引擎(遗留项目、客户端需求等)。在这种情况下,我发现的解决方案是使用“选择性依赖解决”来降级有问题的版本,正如Yarn中所记录的那样:

https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/

{
"name": "project",
"version": "1.0.0",
"dependencies": {
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
},
"resolutions": {
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
}
}

注意“决议”;部分。您可以强制这些包使用降级版本(与您的旧Node引擎兼容)。