badges/shields · error · NotFound
version requirement not found
Error message
version requirement not found
What it means
This NotFound error means the requested package version WAS found on Packagist, but that version's metadata has no 'require' section — i.e. its composer.json declares no dependencies. The service needs the require map to look up the dependency's constraint.
Source
Thrown at services/packagist/packagist-dependency-version.service.js:106
try {
packageVersion = await this.findSpecifiedVersion(
versions,
user,
repo,
version,
server,
)
} catch (e) {
packageVersion = null
}
}
if (!packageVersion) {
throw new NotFound({ prettyMessage: 'invalid version' })
}
if (!packageVersion.require) {
throw new NotFound({ prettyMessage: 'version requirement not found' })
}
// All dependencies' names in the 'require' section from the response should be lowercase,
// so that we can compare lowercase name of the dependency given via url by the user.
Object.keys(packageVersion.require).forEach(dependency => {
packageVersion.require[dependency.toLowerCase()] =
packageVersion.require[dependency]
})
const depLowerCase = dependency.toLowerCase()
if (!packageVersion.require[depLowerCase]) {
throw new NotFound({ prettyMessage: 'version requirement not found' })
}
return { dependencyVersion: packageVersion.require[depLowerCase] }
}
View on GitHub (pinned to 766fd8bc89)
Solutions
- Verify the target package version actually declares the dependency you are querying (check its composer.json on packagist.org)
- Remove the dependency-version badge for packages with no dependencies
- Query a different version of the package that does include the require entry
- If you maintain the package, add the correct require entries in composer.json and publish a new version
Example fix
// before GET /packagist/vendor/leaf-package/1.0.0/symfony/console -> NotFound // after GET /packagist/vendor/full-package/1.0.0/symfony/console
Defensive patterns
Strategy: validation
Validate before calling
const versionMeta = await getPackagistVersionMeta(user, repo, version)
if (!versionMeta || !versionMeta.require || Object.keys(versionMeta.require).length === 0) throw new Error('Package version declares no dependencies; dependency badge not applicable') Type guard
function hasRequireSection(pkgVersion) {
return typeof pkgVersion === 'object' && pkgVersion !== null && typeof pkgVersion.require === 'object' && pkgVersion.require !== null && Object.keys(pkgVersion.require).length > 0
} Try / catch
try {
const result = await dependencyVersion(user, repo, dep, version)
} catch (e) {
if (e instanceof NotFound && e.message === 'version requirement not found') console.warn('This package version has no require section; skip the dependency badge')
else throw e
} Prevention
- Only add dependency badges for packages that declare dependencies in composer.json
- Inspect the package's composer.json require section before adding the badge
- Verify the target version is not a dependency-less release
When it happens
Trigger: Querying a dependency version for a package version whose composer.json has an empty or missing 'require' key (e.g. a package with no dependencies), such as /packagist/user/pkg/1.0.0/dep where pkg@1.0.0 requires nothing.
Common situations: Asking a dependency badge for a dependency of a dependency-less package; querying leaf/utility packages that declare no require entries.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- license not found
- version not specified
- no released version found
- invalid version
- ${kind} dependency not found
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/5ce5380e9a5ed669.
Report an issue: GitHub.