我在package.json
中有一个依赖项,它本身有以下依赖项:"node-rdkafka": "^2.5.0",
在我的本地机器上使用nvm
,并将我的节点版本设置为8.9.1
,而我的npm
版本为5.5.1
,我可以成功运行npm install [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
但是当从我的docker镜像中运行同样的东西(即npm install
)时:FROM node:10.13.0-alpine
或FROM node:8.9.1-alpine
我得到以下错误:
npm ERR! notsup Unsupported engine for [email protected]: wanted: {"node":">=12.0.0"} (current: {"node":"10.13.0","npm":"6.4.1"})
npm ERR! notsup Not compatible with your version of node/npm: [email protected]
npm ERR! notsup Not compatible with your version of node/npm: [email protected]
npm ERR! notsup Required: {"node":">=12.0.0"}
npm ERR! notsup Actual: {"npm":"6.4.1","node":"10.13.0"}
对这种矛盾有什么看法吗?
我显然不需要这么高的节点版本。但它说我有。
3条答案
按热度按时间2ekbmq321#
尝试在Docker中删除
npm install
之前的package-lock.json
62lalag42#
package.json
中的engines属性允许我们建立一系列版本。对于
>=12
,要求使用版本12或更高的节点。因此,解决方案是安装请求的版本:
4zcjmb1e3#
当使用更新的nodejs构建旧应用程序时,使用对nodejs引擎有要求的旧包可能会非常好。
例如,Karma包有这样的要求:
required: { node: '0.10 || 0.12 || 4 || 5 || 6 || 7' }
.但它在nodejs 16中工作正常。在这种情况下,有一个设置可以将EBADENGINE转换为错误或警告。它至少在nodejs 16中工作。
在
~/.npmrc
中添加或删除这一行:engine-strict=true
。我在一个教程之后添加了这个标志,直到我想构建一个旧的应用程序时才意识到它的影响。