Skip to content
Latchkey

npm "EUNSUPPORTEDPROTOCOL" - Fix Unsupported Dependency URL Schemes

npm hit a dependency specifier whose protocol it does not support - link:, portal:, catalog:, patch: and similar are pnpm/Yarn-specific. npm cannot resolve the scheme and aborts with EUNSUPPORTEDPROTOCOL.

What this error means

npm install fails with code EUNSUPPORTEDPROTOCOL, naming a dependency whose version range uses a non-npm scheme. The repo usually works under the package manager that defines that protocol.

npm output
npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "catalog:": catalog:
npm error     at unsupportedURLType (...)

Common causes

A dependency uses a manager-specific protocol

Schemes like catalog: (pnpm catalogs), portal:/link: (Yarn), or patch: are defined by pnpm/Yarn. npm has no resolver for them and rejects the spec.

Installing with the wrong tool

CI runs npm against a manifest authored for pnpm/Yarn. The protocols only make sense to the tool that owns the lockfile.

How to fix it

Install with the manager that defines the protocol

Use pnpm or Yarn (per the repo’s packageManager) so the protocol resolves natively.

Terminal
corepack enable
pnpm install   # for catalog: / pnpm-specific schemes
# or: yarn install   # for portal:/link: under Yarn

Rewrite to a spec npm understands

If you must use npm, replace the unsupported scheme with one npm supports - a version range, a file: path, or a git URL.

package.json
// pnpm/yarn (unsupported by npm)
"@app/lib": "link:../lib"
// npm-supported alternative
"@app/lib": "file:../lib"

How to prevent it

  • Declare and pin the package manager via packageManager + Corepack.
  • Run CI with the manager that owns the lockfile and its protocols.
  • Avoid manager-specific dependency schemes if the project must support npm.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →