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 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.
corepack enable
pnpm install # for catalog: / pnpm-specific schemes
# or: yarn install # for portal:/link: under YarnRewrite 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.
// 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.