neoclide/coc.nvim · error
${this.def} doesn't exists in ${registry}.
Error message
${this.def} doesn't exists in ${registry}. What it means
thrown when the npm registry response contains no entry for the requested extension version in res['versions'][this.version]. coc.nvim throws it because it cannot read the metadata (engines, dist tarball) it needs to install that specific version. It means the exact version does not exist in the registry being queried.
Source
Thrown at src/extension/installer.ts:234
let published = Date.parse(res.time?.[this.version])
if (!Number.isFinite(published) || published > cutoff) {
let versions = Object.keys(res.versions ?? {}).filter(version => {
let published = Date.parse(res.time?.[version])
return Number.isFinite(published) && published <= cutoff
})
this.version = semver.maxSatisfying(versions, '*') ?? undefined
if (!this.version) throw new Error(`${this.def} has no release older than ${releaseAge} days.`)
}
}
} else if (releaseAge > 0) {
let published = Date.parse(res.time?.[this.version])
let cutoff = Date.now() - releaseAge * 24 * 60 * 60 * 1000
if (!Number.isFinite(published) || published > cutoff) {
throw new Error(`${this.def} is not older than ${releaseAge} days.`)
}
}
let obj = res['versions'][this.version]
if (!obj) throw new Error(`${this.def} doesn't exists in ${registry}.`)
let requiredVersion = obj['engines'] && obj['engines']['coc']
if (!requiredVersion) throw new Error(`${this.def} is not a valid coc extension, "engines" field with coc property required.`)
extensionPath(this.root, res.name)
return {
'dist.tarball': obj['dist']['tarball'],
'engines.coc': requiredVersion,
version: obj['version'],
name: res.name
} as Info
}
public async getInfoFromUri(): Promise<Info> {
let { url } = this
let repository: URL
try {
repository = new URL(url)
} catch (_e) {
throw new Error(`"${url}" is not supported, coc.nvim support github.com only`)View on GitHub (pinned to 50e974d969)
Solutions
- Check the exact version exists: npm view <name>@<version> version against the same registry.
- Remove the pinned version from the extension def so the latest version is used.
- Verify/fix the registry configured for coc extensions (point to registry.npmjs.org or a complete mirror).
- List available versions (npm view <name> versions) and pick a published one.
Example fix
// before
new Installer({ def: 'coc-json@9.9.9', root }) // version never published
// after
new Installer({ def: 'coc-json@1.8.0', root }) // a version published in the registry Defensive patterns
Strategy: validation
Validate before calling
const versions = await npmViewVersions(name, registry)
if (!versions.includes(pinnedVersion)) throw new Error(`${name}@${pinnedVersion} not in registry`)
await installer.install() Type guard
function hasVersion(res, v) { return typeof res === 'object' && res !== null && typeof res.versions === 'object' && res.versions !== null && v in res.versions } Try / catch
try { await installer.install() } catch (e) { if (String(e.message).endsWith(`doesn't exists in ${registry}.`)) { /* fall back to latest version */ } else { throw e } } Prevention
- Verify pinned versions with npm view <name>@<version> before installing
- Avoid pinning versions in extension defs unless necessary
- Use a complete, current registry mirror
When it happens
Trigger: Calling the installer's getInfo (via info) with a def/url pinning a version (e.g. name@1.2.3) that the registry has never published, or a registry mirror that lacks the version.
Common situations: Typo in version string; asking for a version that was unpublished (npm unpublish); using a private/custom registry that doesn't mirror all versions; stale registry cache.
Related errors
- ${this.def} is not a valid coc extension, "engines" field wi
- ${name} ${info.version} requires coc.nvim >= ${required}, pl
- ${this.def} has no release older than ${releaseAge} days.
- ${this.def} is not older than ${releaseAge} days.
- "${url}" is not supported, coc.nvim support github.com only
AI-assisted analysis of neoclide/coc.nvim@50e974d969 (2026-08-31).
Data as JSON: /api/errors/30cf42c9ed740989.
Report an issue: GitHub.