在部署到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" 
  }
}

当前回答

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

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

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

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

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

其他回答

有时您无法升级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引擎兼容)。

刚刚发现我不仅需要升级节点,还需要安装它。

将节点升级到最新版本:

brew upgrade node

安装特定版本的节点:

nvm install 17.0.0

您需要运行以下命令,您的问题将得到解决

yarn install --ignore-engines

or

npm install --ignore-engines

您需要升级node的版本。

我也遇到了同样的问题。

如果你使用Homebrew运行:

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解决了,但我不知道为什么以及如何解决。