仅当在Docker中构建时不支持引擎节点/ NPM

uurv41yg  于 2023-10-19  发布在  Docker
关注(0)|答案(3)|浏览(102)

我在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-alpineFROM 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"}

对这种矛盾有什么看法吗?
我显然不需要这么高的节点版本。但它说我有。

2ekbmq32

2ekbmq321#

尝试在Docker中删除npm install之前的package-lock.json

rm package-lock.json
npm i
62lalag4

62lalag42#

package.json中的engines属性允许我们建立一系列版本。
对于>=12,要求使用版本12或更高的节点。
因此,解决方案是安装请求的版本:

FROM node:12
  • 无论如何,我建议查看Docker当前支持的版本here。*
4zcjmb1e

4zcjmb1e3#

当使用更新的nodejs构建旧应用程序时,使用对nodejs引擎有要求的旧包可能会非常好。
例如,Karma包有这样的要求:required: { node: '0.10 || 0.12 || 4 || 5 || 6 || 7' } .但它在nodejs 16中工作正常。
在这种情况下,有一个设置可以将EBADENGINE转换为错误或警告。它至少在nodejs 16中工作。
~/.npmrc中添加或删除这一行:engine-strict=true
我在一个教程之后添加了这个标志,直到我想构建一个旧的应用程序时才意识到它的影响。

相关问题