denoland/deno · error

Following packages don't exist, follow the links and create

Error message

Following packages don't exist, follow the links and create them:
{}

What it means

Before uploading, publish checks that each @scope/package already exists on JSR (a registry 404 marks it missing). Interactively Deno rings a bell and offers per-package create links; when stdin is not a terminal it cannot prompt, so it bails with a list of jsr.io 'new package' URLs (`.../new?scope=...&package=...&from=cli`) to visit manually.

Source

Thrown at cli/tools/publish/mod.rs:901

    };
    futures.push(future);
  }

  let mut missing_packages = vec![];

  while let Some(maybe_create_package_info) = futures.next().await {
    if let Some(create_package_info) = maybe_create_package_info? {
      missing_packages.push(create_package_info);
    };
  }

  if !std::io::stdin().is_terminal() {
    let missing_packages_lines: Vec<_> = missing_packages
      .into_iter()
      .map(|(info, _)| format!("- {}", info.create_url))
      .collect();
    if !missing_packages_lines.is_empty() {
      bail!(
        "Following packages don't exist, follow the links and create them:\n{}",
        missing_packages_lines.join("\n")
      );
    }
    return Ok(());
  }

  for (create_package_info, authorization) in missing_packages {
    ring_bell();
    log::warn!(
      "'@{}/{}' doesn't exist yet. Visit {} to create the package",
      &create_package_info.scope,
      &create_package_info.package,
      colors::cyan_with_underline(&create_package_info.create_url)
    );
    log::warn!("{}", colors::gray("Waiting..."));
    let _ = open::that_detached(&create_package_info.create_url);

View on GitHub (pinned to f7822238ca)

Solutions

  1. Open each listed URL (https://jsr.io/new?scope=...&package=...&from=cli) once and create the package, then re-run publish.
  2. Or run `deno publish` once in a local terminal and follow the interactive prompt to create missing packages.
  3. Verify the scope exists on jsr.io and your account can create packages in it (scope membership/permissions).

Example fix

# before (CI, non-tty)
deno publish   # error: 'Following packages don't exist, follow the links...'
# after: create the package once, then CI publish proceeds
# visit https://jsr.io/new?scope=my-scope&package=my-pkg&from=cli
deno publish
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
# fail fast if the package doesn't exist on JSR yet (same API publish uses)
status=$(curl -s -o /dev/null -w '%{http_code}' "https://api.jsr.io/scopes/$SCOPE/packages/$PKG")
if [ "$status" = "404" ]; then
  echo "create the package first: https://jsr.io/new?scope=$SCOPE&package=$PKG&from=cli" >&2
  exit 1
fi

Prevention

When it happens

Trigger: First-ever publish of a package that does not exist on JSR yet, run non-interactively — `std::io::stdin().is_terminal()` is false, e.g. CI pipelines, scripts redirecting stdin, `deno publish < /dev/null`.

Common situations: Automated first release in GitHub Actions before anyone created the package on jsr.io; publishing a newly scaffolded workspace member from CI without an initial local publish.

Related errors


AI-assisted analysis of denoland/deno@f7822238ca (2026-08-29). Data as JSON: /api/errors/9c202f40b12146de. Report an issue: GitHub.