{"record":{"id":"9c202f40b12146de","repo":"denoland/deno","slug":"following-packages-don-t-exist-follow-the-links-a","errorCode":null,"errorMessage":"Following packages don't exist, follow the links and create them:\n{}","messagePattern":"Following packages don't exist, follow the links and create them:\n(.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/publish/mod.rs","lineNumber":901,"sourceCode":"    };\n    futures.push(future);\n  }\n\n  let mut missing_packages = vec![];\n\n  while let Some(maybe_create_package_info) = futures.next().await {\n    if let Some(create_package_info) = maybe_create_package_info? {\n      missing_packages.push(create_package_info);\n    };\n  }\n\n  if !std::io::stdin().is_terminal() {\n    let missing_packages_lines: Vec<_> = missing_packages\n      .into_iter()\n      .map(|(info, _)| format!(\"- {}\", info.create_url))\n      .collect();\n    if !missing_packages_lines.is_empty() {\n      bail!(\n        \"Following packages don't exist, follow the links and create them:\\n{}\",\n        missing_packages_lines.join(\"\\n\")\n      );\n    }\n    return Ok(());\n  }\n\n  for (create_package_info, authorization) in missing_packages {\n    ring_bell();\n    log::warn!(\n      \"'@{}/{}' doesn't exist yet. Visit {} to create the package\",\n      &create_package_info.scope,\n      &create_package_info.package,\n      colors::cyan_with_underline(&create_package_info.create_url)\n    );\n    log::warn!(\"{}\", colors::gray(\"Waiting...\"));\n    let _ = open::that_detached(&create_package_info.create_url);\n","sourceCodeStart":883,"sourceCodeEnd":919,"githubUrl":"https://github.com/denoland/deno/blob/f7822238cab635a3a19f99f493f675fa81a7f9d8/cli/tools/publish/mod.rs#L883-L919","documentation":"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.","triggerScenarios":"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`.","commonSituations":"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.","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)."],"exampleFix":"# before (CI, non-tty)\ndeno publish   # error: 'Following packages don't exist, follow the links...'\n# after: create the package once, then CI publish proceeds\n# visit https://jsr.io/new?scope=my-scope&package=my-pkg&from=cli\ndeno publish","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\n# fail fast if the package doesn't exist on JSR yet (same API publish uses)\nstatus=$(curl -s -o /dev/null -w '%{http_code}' \"https://api.jsr.io/scopes/$SCOPE/packages/$PKG\")\nif [ \"$status\" = \"404\" ]; then\n  echo \"create the package first: https://jsr.io/new?scope=$SCOPE&package=$PKG&from=cli\" >&2\n  exit 1\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["publish","jsr","first-publish","non-interactive","package-creation"],"backgroundTag":"registry-package-missing","analyzedSha":"f7822238cab635a3a19f99f493f675fa81a7f9d8","analyzedAt":"2026-08-29T08:55:39.519Z","contentChangedAt":"2026-08-29T08:55:39.519Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}