badges/shields · error · InvalidParameter
No version or ref for ${wantedDependency}
Error message
No version or ref for ${wantedDependency} What it means
This InvalidParameter error is thrown when the dependency WAS found in the lockfile but its entry contains neither a usable version nor a ref (both missing/null). Pipfile.lock entries normally carry a version like '==1.2.3' or a git ref; an entry without either cannot produce a badge.
Source
Thrown at services/pipenv-helpers.js:80
if (!(wantedDependency in dependenciesOfKind)) {
throw new InvalidParameter({
prettyMessage: `${kind} dependency not found`,
})
}
const { version, ref } = dependenciesOfKind[wantedDependency]
if (version) {
// Strip the `==` which is always present.
return { version: version.replace('==', '') }
} else if (ref) {
if (ref.length === 40) {
// assume it is a commit hash
return { ref: ref.substring(0, 7) }
}
return { ref } // tag
} else {
throw new InvalidParameter({
prettyMessage: `No version or ref for ${wantedDependency}`,
})
}
}
export { isLockfile, getDependencyVersion }
View on GitHub (pinned to 766fd8bc89)
Solutions
- Regenerate the lockfile with `pipenv lock` so every entry has version or ref metadata
- Inspect the offending entry in Pipfile.lock and restore the missing 'version' or 'ref' field
- Avoid hand-editing Pipfile.lock; use `pipenv install pkg==x.y.z` then relock
- Check for unresolved git-merge markers in Pipfile.lock
Example fix
// before (Pipfile.lock)
"requests": { "hashes": [...] }
// after
"requests": { "version": "==2.31.0", "hashes": [...] } Defensive patterns
Strategy: validation
Validate before calling
const entry = lock.default[wantedDependency]
if (!entry || (!entry.version && !entry.ref)) throw new Error(`Lockfile entry for ${wantedDependency} has neither version nor ref; relock with pipenv lock`) Type guard
function hasVersionOrRef(entry) {
return typeof entry === 'object' && entry !== null && (typeof entry.version === 'string' || typeof entry.ref === 'string')
} Try / catch
try {
const v = await getDependencyVersion({ kind, wantedDependency }, lockfileData)
} catch (e) {
if (e instanceof InvalidParameter && e.message.startsWith('No version or ref')) console.warn(`Malformed lockfile entry for ${wantedDependency}; run 'pipenv lock'`)
else throw e
} Prevention
- Never hand-edit Pipfile.lock; relock instead
- Resolve merge conflicts in Pipfile.lock by regenerating, not by hand
- Sanity-check entries for version/ref fields in CI before deploying badges
When it happens
Trigger: A hand-edited or corrupted Pipfile.lock where the dependency object lacks 'version' and 'ref'; lockfile written by a tool variant that stores resolution differently.
Common situations: Manual lockfile editing, merge conflicts resolved badly inside Pipfile.lock, or exotic dependency entries (e.g. file/path deps) that omit version metadata.
Related errors
AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30).
Data as JSON: /api/errors/bb08591b1ac141eb.
Report an issue: GitHub.