Node.js 仅在Docker中构建时不支持引擎节点/NPM
我的Node.js 仅在Docker中构建时不支持引擎节点/NPM,node.js,docker,npm,alpine,nvm,Node.js,Docker,Npm,Alpine,Nvm,我的包.json中有一个依赖项,它本身具有以下依赖项: “节点rdkafka”:“^2.5.0”, 在本地计算机上使用nvm,并将我的节点版本设置为8.9.1,并且我的npm版本为5.5.1,我可以成功运行 npm安装节点-rdkafka@2.7.1 但是当从docker映像中运行相同的东西时(即npm install): 来自节点:10.13.0-alpine或来自节点:8.9.1-alpine 我得到以下错误: npm ERR! notsup Unsupported engine for
包.json中有一个依赖项,它本身具有以下依赖项:
“节点rdkafka”:“^2.5.0”,
在本地计算机上使用nvm
,并将我的节点版本设置为8.9.1
,并且我的npm
版本为5.5.1
,我可以成功运行
npm安装节点-rdkafka@2.7.1
但是当从docker映像中运行相同的东西时(即npm install
):
来自节点:10.13.0-alpine
或来自节点:8.9.1-alpine
我得到以下错误:
npm ERR! notsup Unsupported engine for node-rdkafka@2.7.1: 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: node-rdkafka@2.7.1
npm ERR! notsup Not compatible with your version of node/npm: node-rdkafka@2.7.1
npm ERR! notsup Required: {"node":">=12.0.0"}
npm ERR! notsup Actual: {"npm":"6.4.1","node":"10.13.0"}
对这种不一致性有什么看法吗
我显然不需要这么高的节点版本。但是它说我会的。在Docker中npm安装之前尝试删除package lock.json
rm package-lock.json
npm i
package.json
中的engines属性允许我们建立一系列版本
With=12
正在请求版本为12或更高的节点
因此,解决方案是安装请求的版本:
FROM node:12
无论如何,我建议您查看Docker当前支持的版本。从日志中可以看出,您确信Docker在本地环境(具有nvm的环境)上工作正常吗?您可能认为可能存在一些不允许的破坏性更改,如果有什么问题的话,那不是docker的问题,而是您的本地节点安装的问题,它欺骗了库忽略节点版本。奇怪的是,最小的设置(简单的docker文件,带有FROM node:10.13.0运行npm install node-rdkafka@2.7.1
)为我正确构建,当然,我不使用alpine,因为rdkafka需要python可执行文件和其他一些我不想处理的设置。。。你能提供完整的package.json
和Dockerfile
?嗯。。我仍然在节点10.13.0的中遇到同样的问题,这是因为.npmrc
文件中有一个设置engine strict=true
,不能为我解决这个问题。