badges/shields · error · NotFound

package not found

Error message

package not found

What it means

The feedz service fetches the NuGet v3 version index from f.feedz.io and transforms it. If the versions array from the endpoint is empty, it throws NotFound with prettyMessage 'package not found', meaning feedz has no versions registered for that organization/repository/package combination.

Source

Thrown at services/feedz/feedz.service.js:57

            name: 'packageName',
            example: 'MongoDB.Driver.Core',
          },
        ),
      },
    },
  }

  static defaultBadgeData = {
    label: 'feedz',
  }

  packagesUrl({ organization, repository, packageName }) {
    return `https://f.feedz.io/${organization}/${repository}/nuget/v3/packages/${packageName}/index.json`
  }

  transform({ versions, includePrereleases }) {
    if (versions.length === 0) {
      throw new NotFound({ prettyMessage: 'package not found' })
    }
    // Strip build metadata and select the appropriate version
    const cleanedVersions = versions.map(v => stripBuildMetadata(v))
    return selectVersion(cleanedVersions, includePrereleases)
  }

  async handle({ variant, organization, repository, packageName }) {
    const includePrereleases = variant === 'vpre'
    const url = this.packagesUrl({ organization, repository, packageName })
    const json = await this._requestJson({
      schema: packagesSchema,
      url,
      httpErrors: {
        404: 'repository or package not found',
      },
    })
    const version = this.transform({
      versions: json.versions,

View on GitHub (pinned to 766fd8bc89)

Solutions

  1. Verify the package name and that it exists in the specified feedz feed (check the index.json URL in a browser)
  2. Correct the organization/repository in the badge URL
  3. Push the package to the feed or select a feed that contains it
  4. Check feedz permissions — an unauthorized feed may return an empty version list

Example fix

// before
/feedz/v/myorg/wrong-repo/MyPackage
// after
/feedz/v/myorg/my-repo/MyPackage
Defensive patterns

Strategy: validation

Validate before calling

async function feedzHasVersions(organization, repository, packageName) {
  const url = `https://f.feedz.io/${organization}/${repository}/nuget/v3/packages/${packageName}/index.json`
  const res = await fetch(url)
  if (!res.ok) return false
  const json = await res.json()
  return Array.isArray(json.versions) && json.versions.length > 0
}

Type guard

function hasVersions(json) {
  return Array.isArray(json.versions) && json.versions.length > 0
}

Try / catch

try {
  const badge = await getFeedzVersionBadge({ organization, repository, packageName })
} catch (e) {
  if (e.prettyMessage === 'package not found') {
    renderPlaceholderBadge('package missing')
  } else throw e
}

Prevention

When it happens

Trigger: Requesting a feedz version badge where the package index at https://f.feedz.io/{organization}/{repository}/nuget/v3/packages/{packageName}/index.json exists but lists zero versions, or the versions array is missing/empty in the response.

Common situations: Package name wrong case or missing entirely from the feed; package published to a different feed (organization/repository mismatch); package never pushed to feedz; feed deleted or renamed.

Related errors


AI-assisted analysis of badges/shields@766fd8bc89 (2026-08-30). Data as JSON: /api/errors/520d931fcf65ef13. Report an issue: GitHub.