Unsupported Engine Node / Npm Only When Building in Docker

I have a dependency in my package.json which itself has the following dependency:

"node-rdkafka": "^2.5.0",

Using nvm on my local machine and setting my node version to 8.9.1, and my npm version is 5.5.1, I can successfully run

npm install [email protected]

But when running the same thing (i.e npm install) from within my docker image:

FROM node:10.13.0-alpine or FROM node:8.9.1-alpine

I get the following error:

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"}

Any ideas about this inconsistency?

I clearly dont need a node version this high. But it says I do.

4

3 Answers

Try to remove package-lock.json before npm install in Docker

rm package-lock.json
npm i
2

The engines property in the package.json allows us to establish a range of versions.

With >=12 is asking for a node with version 12 or greater.

Therefore, the solution would be to install the requested version:

FROM node:12

Anyway, I recommend reviewing the versions supported by Docker currently here.

When building old apps with a more recent nodejs, it might work perfectly fine to use older packages which had requirements on nodejs engine.

Karma package, for instance, has this requirement : required: { node: '0.10 || 0.12 || 4 || 5 || 6 || 7' }. But it works ok in nodejs 16.

In this case, there is a setting to transform EBADENGINE into a error or warning. It works in nodejs 16 at least.

Add or remove this line in your ~/.npmrc : engine-strict=true.

I added this flag following a tutorial, and didn't realize its impact until I wanted to build an older app.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Alexander Ross

Alexander Ross

Gaming, Esports & Interactive Media Writer

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.

Share this article
Twitter Facebook Pinterest