引擎“节点”与此模块不兼容

Posted

技术标签:

【中文标题】引擎“节点”与此模块不兼容【英文标题】:The engine "node" is incompatible with this module 【发布时间】:2019-10-30 05:09:34 【问题描述】:

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

【问题讨论】:

是的,你收到这个错误是因为包版本和节点引擎不兼容。 @ShubhamSharma,谢谢。如果我在 package.json 中指定引擎块,那么我不会收到任何错误,对吗?那我就试试这个 尝试将 .node-version 或 .nvmrc 文件添加到存储库中站点的基本目录。 【参考方案1】:

您可以尝试忽略引擎:

$ yarn install --ignore-engines

$ yarn global add &lt;your app&gt; --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

【讨论】:

或者,正如彼得在下面回答的那样,只需运行 yarn config set ignore-engines true 即可在整个系统上永久禁用此侵入性检查。【参考方案2】:

您需要升级您的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/

【讨论】:

(可选)如果您需要特定而不是最新版本的节点,您可以这样做:brew update; brew search node; brew unlink node; brew install node@12 您应该在答案中提及“如果您不是 Windows 用户”。 @J.Z.你忘了最后一步链接安装的版本brew link node@12 即使更新后我得到“节点 17.3.0 已安装”仍然有同样的错误你知道如何解决它吗?【参考方案3】:

一个 hack 的修复可以是

yarn config set ignore-engines true

但是,如果您想要一个永久的解决方案是:

    删除 node_modules/, package-lock.json & yarn.lock 再次运行 yarn install 或 npm i。

【讨论】:

删除 yarn.lock 并再次执行 yarn install 对我有用,这似乎是最明智的解决方案 - 我克隆了一个多年未接触过的存储库,并且我的节点版本已经升级了 -错误是因为 yarn.lock 告诉 yarn 需要某个节点版本——在我的例子中,'Expected version ">=4 谢谢!那行得通。【参考方案4】:

安装包的时候在后缀加--ignore-engines,如下:

yarn add &lt;package_name&gt; --ignore-engines

【讨论】:

谢谢 :) 我不建议忽略任何东西,但是嘿,在本地一切都很好 :D【参考方案5】:

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

【讨论】:

【参考方案6】:

即使在使用最新版本多次安装 Nodejs 后,我在 Ubuntu 上也遇到了类似的问题,它始终显示相同的旧 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

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

【讨论】:

【参考方案7】:

我建议按照错误消息中的说明执行操作并检查您的 Node.js 版本 (node -v)。升级 Node.js 最简单的方法是使用 n 版本管理器:

$ npm install -g n

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

【讨论】:

【参考方案8】:
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 为例

【讨论】:

该用户正在尝试使用 yarn 管理他们的包裹。坚持用他们使用的工具回答问题可能是个好主意。我不是 js 专家,但我知道混合使用 yarn 和 npm 会导致奇怪的行为。【参考方案9】:

对我有用的是将 Node 更新到最新版本。根据您的操作系统遵循任何教程。

Upgrading Node.js to latest version

【讨论】:

【参考方案10】:

你可以试试:

    打开你package.json 找到 "engines": "node": "14.x" 更改14.x -> &gt;=14.x

【讨论】:

【参考方案11】:

我现在用旧代码发现了这个问题,但是,我用以下方法解决了它: 纱线升级

【讨论】:

提供一个简单的解决方案不是问题,但你的答案应该更完整。例如,您可以提供完整的分步解答来完成更完整的解决方案。

以上是关于引擎“节点”与此模块不兼容的主要内容,如果未能解决你的问题,请参考以下文章

(React on Rails)引擎“节点”与此模块不兼容。预期版本“...”

引擎“节点”与此模块不兼容。预期版本“12.x”。得到“14.8.0”

将 Tailwind 安装到 Ruby on Rails 6 |引擎“节点”与此模块不兼容

错误 eslint@5.6.0:引擎“节点”与此模块不兼容。尝试创建反应应用程序时

错误 style-loader@3.2.1:引擎“节点”与此模块不兼容。预期版本 ">= 12.13.0"。得到“10.19.0”

平台“win32”与此模块不兼容(fsevents)