Skip to content
Latchkey

esbuild "Could not resolve '<package>'" - Fix Missing Deps in CI

esbuild followed an import and could not resolve it. The package is not installed, the path is wrong, or it is a Node built-in/peer that should be marked external for the build platform.

What this error means

The build fails with Could not resolve "<package>", naming the importing file and offering a hint (mark it external, or check the path). It is deterministic.

esbuild
✘ [ERROR] Could not resolve "lodash-es"
    src/util.ts:1:23:
      1 │ import debounce from "lodash-es"
        ╵                      ~~~~~~~~~~~~
  You can mark the path "lodash-es" as external to exclude it from the bundle.

Common causes

Dependency not installed or not declared

The package is missing from node_modules/package.json, so a clean npm ci build cannot resolve it.

Wrong path or subpath not exported

A relative path typo, a case mismatch, or a deep subpath the package does not export.

Node built-in not externalized for a browser/Node target

Importing a Node core module (fs, path) in a build that does not mark it external, or for the browser, fails resolution.

How to fix it

Install the dependency and fix the path

Terminal
npm install lodash-es
npm ls lodash-es   # confirm it's a direct dependency

Mark platform/peer modules external

Externalize Node built-ins (or peers in a library build) so esbuild does not try to bundle them.

esbuild config
// esbuild build options
{ platform: 'node', external: ['react', 'react-dom'] }

How to prevent it

  • Declare every imported package as a direct dependency.
  • Set the correct platform and externalize built-ins/peers intentionally.
  • Match import paths and casing to what the package actually exports.

Frequently asked questions

What causes ""Could not resolve" (esbuild)"?
The package is missing from node_modules/package.json, so a clean npm ci build cannot resolve it.
How do I fix "Could not resolve" (esbuild)?
Install the dependency and fix the path

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card