What This Error Means
npm could not find the package (or the requested version) at the configured registry.
How to Fix It
- Check which registry npm is using:
npm config get registry. - If the package is scoped, verify scope registry mapping in
.npmrc(example:@your-scope:registry=...). - Check the exact package name and scope. Typos are the most common cause.
- If it is a private package, confirm auth:
npm whoamiand verify.npmrctoken config. - Retry with
npm --verboseif the error message is truncated.
Why It Happens
- The configured registry does not contain the package/version you requested.
- Auth is missing for a private registry or scoped package.
- The requested version/tag/range is invalid or does not exist.
How to Verify
- Re-run
npm view <pkg>for the same registry and confirm metadata is accessible. - Re-run the original install and confirm the resolution error no longer appears.
Manual dependency inspection
- Check which registry npm is using:
npm config get registry. - If the package is scoped, verify scope registry mapping in
.npmrc(example:@your-scope:registry=...). - Query the registry directly for metadata:
npm view <pkg>@<version> --json.
Common CLI Output
npm ERR! code E404npm ERR! 404 Not Found: @angular/cli@latest How npm resolves dependencies
- npm resolves packages by fetching metadata from the registry, then selecting versions that satisfy semver ranges.
- Private registries and scopes add auth and routing requirements via
.npmrc. - If metadata lookup fails or no version satisfies constraints, npm throws a resolution error.
Prevention Tips
- Keep registry config and auth in
.npmrcunder version control (where appropriate). - Pin versions (or use lockfiles) to avoid unexpected tag/range changes.
- Prefer a proxy/cache registry for CI stability.
Where This Can Be Triggered
github.com/npm/cli/blob/417daa72b09c5129e7390cd12743ef31bf3ddb83/lib/commands/view.js
Open-source npm CLI code reference tied to this error code. - GitHub
const u = pckmnt.time.unpublished
throw Object.assign(new Error(`Unpublished on ${u.time}`), {
statusCode: 404,
code: 'E404',
pkgid: pckmnt._id,
})
}