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
- Open each listed URL (https://jsr.io/new?scope=...&package=...&from=cli) once and create the package, then re-run publish.
- Or run `deno publish` once in a local terminal and follow the interactive prompt to create missing packages.
- 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
- Do the first publish interactively from a local terminal so Deno can prompt with the create links.
- Pre-create packages (visit jsr.io/new?scope=...&package=...&from=cli) before enabling CI publishing.
- In CI, pre-check each @scope/package via the JSR API (https://api.jsr.io/scopes/<scope>/packages/<pkg>) so the failure is actionable before the release job starts.
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
- No means to authenticate. Pass a token to `--token`, or enab
- Found {} problem{}
- Cannot represent compiler option '{name}' as a generated JSX
- unable to find npm package in workspace
- missing version in package.json of npm package
AI-assisted analysis of denoland/deno@f7822238ca (2026-08-29).
Data as JSON: /api/errors/9c202f40b12146de.
Report an issue: GitHub.