Many times, for some annoying reason, the Sharp library, which is a popular image processor for Node.js, simply won’t work. The reason depends on where it is failing: Might be in your local environment when upgrading your stack, or while deploying your site to a server, probably because you need a newer version of Node.js, stuff like that…


Depending on the environment it is failing, the following solutions might work for you. This is mainly for the Astro framework, which is awesome (a LOT better than Gatsby, in my opinion), but probably would work for other frameworks as well.

Local environment

Solution 1: Installing Sharp with --ignore-engines

The flag “—ignore-engines` lets you install the Sharp package bypassing Sharp’s strict version requirements—probably that’s why it tends to annoy when you upgrade some dependencies in your project.

npm install sharp --ignore-engines

yarn add sharp --ignore-engines

pnpm add sharp --ignore-engines

By installing it this way, the images in your Astro project should appear again!

Production environment

Solution 2: Using a newer version of Node.js

If you are deploying your Astro project to a server, you might need to use a newer version of Node.js. Sharp requires at least Node.js 12.17.0, so make sure you are using a version equal or higher than that.

If you’re using Netlify, you can change the Node version in the Dependency management section in your Site configuration. You should choose something between ^18.17.0 or >= 20.3.0.

Last resort solution

Sharp is the default image processing library in Astro, but it seems you can change it. Normally one shouldn’t be too worried about it, but when this type of errors happens, there’s no other option. To do it, simply add this piece of code into your astro.config.mjs file:

  image: {
    service: {
      entrypoint: 'astro/assets/services/noop'
  },

This essentially disables the image processing service in Astro, which is not ideal, but it’s better than having broken images in your site.

Until next time!