Build failed: The engine "node" is incompatible with this module. Expected version "12.x". Got "14.15.0"

My project is Ruby/Rails based and we use a config.yml file to setup CircleCI. There is no mention of node in it, but in our package.json file we have:

  "engines": {
     "node": "12.x"
   },

CircleCI ran fine yesterday, but today the same code update fails with this error in the Yarn Install section:

#!/bin/bash -eo pipefail
yarn install --frozen-lockfile
yarn install v1.22.5
[1/5] Validating package.json...
error 12vbiz@1.0.0: The engine "node" is incompatible with this module. Expected version "12.x". Got "14.15.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Exited with code exit status 1
CircleCI received exit code 1

As far as I can tell the 12.x versions should still be available on CircleCI?

So for fun I tried bumping my local and the package to 14.x and then pushed that as a PR - which passed on CircleCI.

It appears that 12.x is no longer supported? So will look at upgrading to 14.x.

Is there a way to get notified before these changes occur?

@tonydehnke Can you confirm which Docker image you were using previously?

I will try, but it would have been whatever CircleCI used as the default for node 12.x as that is what was in the package.json file… no specific Docker image I don’t think

I’m not sure where in the CircleCI builds I could see that after the fact.

It looks like a whole host of docker images were bumped to Node 14.15.0 yesterday. This GitHub commit highlights the Ruby 2.7.2 image that we use that was changed. We had the same error as @tonydehnke and just like Tony, bumping our package.json to align with the new dockerfile’s version resolved our problem.

1 Like

Assuming we can’t upgrade node from 12 to 14 in our app without a massive overhaul, how do I specify a “ruby 2.6 + node 12” image in my circleci/config.yml now? This is what we were using before:

- image: circleci/ruby:2.6.6-node-browsers

I was able to get it back running by hardcoding the SHA of the old version, but this doesn’t seem sustainable.

   - image: circleci/ruby@sha256:b018ec2a8f0bbf06880735d2801402bad316c465edb60663be83ac8f1086b805