vercel/next.js · error · Error

Module `sharp` not found. Please run `npm install --cpu=wasm

Error message

Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.

What it means

Thrown by the image optimizer when require('sharp') throws MODULE_NOT_FOUND. Next.js uses sharp for server-side image optimization; when it is not installed (or only present for the wrong CPU), the catch block detects MODULE_NOT_FOUND and rethrows this actionable message instructing the wasm32 install. Any other require error is rethrown unchanged.

Source

Thrown at packages/next/src/server/image-optimizer.ts:121

        'VipsForeignLoadTiff',
        'VipsForeignLoadWebp',
      ],
    })
    if (typeof operationCache === 'boolean') {
      _sharp.cache(operationCache)
    }
    if (_sharp.concurrency() > 1) {
      // Reducing concurrency should reduce the memory usage too.
      // We more aggressively reduce in dev but also reduce in prod.
      // https://sharp.pixelplumbing.com/api-utility#concurrency
      const divisor = process.env.NODE_ENV === 'development' ? 4 : 2
      _sharp.concurrency(
        concurrency ?? Math.floor(Math.max(_sharp.concurrency() / divisor, 1))
      )
    }
  } catch (e: unknown) {
    if (isError(e) && e.code === 'MODULE_NOT_FOUND') {
      throw new Error(
        'Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.'
      )
    }
    throw e
  }
  return _sharp
}

export interface ImageParamsResult {
  href: string
  isAbsolute: boolean
  isStatic: boolean
  width: number
  quality: number
  mimeType: string
  sizes: number[]
  minimumCacheTTL: number
}

View on GitHub (pinned to 0ae8c72462)

Solutions

  1. Run the command in the message: `npm install --cpu=wasm32 sharp` (or the package-manager equivalent).
  2. If you don't need optimization, disable it via images.unoptimized: true in next.config.
  3. For native performance on a supported platform, run `npm install sharp` to fetch the correct binary.
  4. After installing, restart the dev/prod server so sharp is required again.

Example fix

// before: next.config.js with optimization enabled but sharp missing
module.exports = {}

// after: either install sharp (`npm install --cpu=wasm32 sharp`) or disable optimization
module.exports = {
  images: { unoptimized: true },
}
Defensive patterns

Strategy: fallback

Validate before calling

// Detect missing sharp before the optimizer is hit; fall back to unoptimized
function resolveImagesConfig() {
  try { require.resolve('sharp') } catch {
    return { images: { unoptimized: true } } // graceful fallback
  }
  return { images: {} }
}

Try / catch

try {
  _sharp = require('sharp')
} catch (e: unknown) {
  if (isError(e) && e.code === 'MODULE_NOT_FOUND') {
    throw new Error('Module `sharp` not found. ...')
  }
  throw e
}

Prevention

When it happens

Trigger: A request hits /_next/image (or the image optimizer) and sharp has not been installed. The require('sharp') at line 94 throws with code 'MODULE_NOT_FOUND', caught and converted to this message.

Common situations: Fresh install where sharp is an optional dependency that did not install. Deploying to a platform (e.g. wasm/edge or a minimal image) where the native sharp binary is unavailable. Using a package manager that skipped optionalDependencies. Manually removing sharp to slim node_modules.

Related errors


AI-assisted analysis of vercel/next.js@0ae8c72462 (2026-08-06). Data as JSON: /api/errors/08d7826b6e5d1d35. Report an issue: GitHub.