Breaking change: Using system Node version to run Build Plugins

When we run your builds, we use a system Node version, which is currently v12.16.3. Build Plugins, however, do not necessarily use that Node version. Instead, they may use the Node version you set with the NODE_VERSION environment variable or your build image’s default Node version:

  • :white_check_mark: Plugins installed from the Plugins tab use our system Node version
  • :x: Plugins installed via package.json use the Node version you set with NODE_VERSION or the build image’s default Node version
  • :x: Local plugins use the Node version you set with NODE_VERSION or the build image’s default Node version

This makes it difficult for us to manage Node module versions and ensure consistent Build Plugin behavior in your builds. That’s why we’re making a change on Tuesday June 22, 2021 to exclusively use our system Node version to run your Build Plugins.

What does this mean for you?

You will be impacted if:

  • You are running a local plugin or installing your plugin via package.json
    AND
  • Your site is currently using a NODE_VERSION other than 12
    AND
  • Your Build Plugin does not work on Node 12

What do you need to do?

If you are a plugin author, you will need to migrate your Build Plugin to be compatible with Node 12 by Tuesday June 22, 2021. To test compatibility, either upgrade your local Node version to 12 or use a Node version manager locally to switch to Node 12 before running your Build Plugin. You’ll then need to fix any errors that arise locally to ensure that your plugin will work on Netlify after this change.

If you are using a plugin that has not been migrated to Node 12, please file an issue on the plugin repository so the plugin author can make the necessary changes.


Please let us know in the comments below if there’s anything we can help with along the way.

2 Likes

Update

With this change, we intended to target and upgrade Build Plugins running with a Node version lower than 12. But we found that we also impacted sites with Build Plugins running a Node version higher than 12, effectively forcing them to use an older Node version. To mitigate this, starting on June 30, 2021, we are more specifically targeting this change to affect local and package.json-installed plugins that are executing with a NODE_VERSION lower than 10.18.0.

Impact

If you were running a Node version greater than 12, and were impacted by failing builds due to our June 22 rollout, our updated targeting as of June 30 will result in your builds succeeding with no change to your NODE_VERSION or Build Plugin configuration.


Running into issues? Let us know and we’ll be happy to help!

1 Like

Hi @jen ,

Our team is running into issues with the NODE_VERSION variable not being respected again. We just spun up another site (packdigital-sandbox-storefront) in our account today and it is failing with the error:

1:55:58 PM: [1/5] Validating package.json...
1:55:58 PM: error backpack@: The engine "node" is incompatible with this module. Expected version ">=14.0.0". Got "12.18.0"
1:55:58 PM: error Found incompatible module.

Here is the initial post that you responded to where this problem should have been resolved. Not sure if something happened again. Netlify build suddenly ignoring NODE_VERSION (Failing) - #8 by jen

Hi @jen, just for reference @andrew.nguyen and I work together and the other sites in our org (pre-this change) are working fine. Thanks for your help!

Hey @andrew.nguyen :wave:

So, looking through the logs this seems to be unrelated with this particular change, as it isn’t related with plugin execution but just the regular npm/yarn install of your site dependencies (this particular change affects only the Node version we rely on to execute plugins).

It seems that your build is relying on the default node version we assign to newly created sites. May I ask how you’re overriding the selected node version? Via an UI environment variable NODE_VERSION, netlify.toml or .nvmrc?

1 Like

Hi @jgantunes @jen, apologies for the false alarm this time. The problem was actually at our end (missing NODE_VERSION en var) :sweat: Have a good weekend.

1 Like