parcel-bundler/parcel · error · Error
npmResolve failed: resolving ${name}@${version}
Error message
npmResolve failed: resolving ${name}@${version} What it means
Thrown by `SimplePackageInstaller._npmResolve` after a successful registry fetch when `semver.maxSatisfying` cannot find any published version matching the requested range. The package exists, but none of its published versions satisfy the requested range (e.g. asking for `^5.0.0` when only `4.x` is published).
Source
Thrown at packages/dev/repl/SimplePackageInstaller/index.js:88
}
const data: {|
name: string,
modified: string,
'dist-tags': {|[string]: string|},
versions: {|[string]: ResolveCacheEntry|},
|} = await res.json();
let resolvedVersion;
if (version in data['dist-tags']) {
resolvedVersion = data['dist-tags'][version];
} else if (semver.validRange(version)) {
// $FlowFixMe
resolvedVersion = (semver.maxSatisfying(
Object.keys(data.versions),
version,
): string);
if (!resolvedVersion) {
throw new Error(`npmResolve failed: resolving ${name}@${version}`);
}
} else {
throw new Error(
`${name}@${version}: only npm semver dependencies are currently supported.`,
);
}
this.cache.resolve.set(
`${name}@${version}`,
data.versions[resolvedVersion],
);
return data.versions[resolvedVersion];
}
async _npmFetch(tarball: string): Promise<Map<string, Uint8Array>> {
const cacheEntry = this.cache.fetch.get(tarball);
if (cacheEntry) {
return cacheEntry;
}View on GitHub (pinned to 59484858a1)
Solutions
- Run `npm view <name> versions` to see what's actually published.
- Loosen the range or use a known dist-tag (e.g. `latest`) instead.
- Confirm the major you expect has been released; downgrade your request if not.
- If a prerelease is required, use an explicit prerelease version, not a caret range.
Example fix
// before
installer._npmResolve('react', '^19.0.0') // only 18.x published
// after
installer._npmResolve('react', '^18.2.0') Defensive patterns
Strategy: validation
Validate before calling
const semver = require('semver');
async function rangeIsSatisfiable(name, range) {
const r = await fetch(`https://registry.npmjs.org/${name}`).then(r => r.json());
return !!semver.maxSatisfying(Object.keys(r.versions), range);
} Prevention
- Check published versions with `npm view <name> versions` before pinning.
- Prefer dist-tags (latest) over forward-looking caret ranges.
- Avoid ranges that assume an unreleased major.
When it happens
Trigger: Requesting `name@^5.0.0` when only `4.x` versions exist; requesting a version higher than the latest `dist-tag`; requesting a range that excludes all published versions (`>1.0.0 <1.0.0`); prerelease-only ranges without matching prereleases.
Common situations: Depended on a major that was never released; asked for `next` tag's version explicitly as a range; version pinned ahead of release; package yanked all matching versions.
Related errors
- ${name}@${version}: only npm semver dependencies are current
- Could not find module "${name}" satisfying ${range}.
- npmResolve failed: fetching ${name} - ${res.status}
- npmFetch failed: fetching ${tarball} - ${res.status}
- The plugin "${pluginName}" is not compatible with the curren
AI-assisted analysis of parcel-bundler/parcel@59484858a1 (2026-08-13).
Data as JSON: /api/errors/6d8951b28a95e8ac.
Report an issue: GitHub.