{"record":{"id":"321fc2bf27354901","repo":"denoland/deno","slug":"jsr-package-info-not-found","errorCode":null,"errorMessage":"JSR package info not found: {}","messagePattern":"JSR package info not found: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/lsp/jsr.rs","lineNumber":417,"sourceCode":"    let file_fetcher = self.file_fetcher.clone();\n    let file = {\n      let file = file_fetcher.fetch_bypass_permissions(&search_url).await?;\n      TextDecodedFile::decode(file)?\n    };\n    let names = Arc::new(parse_jsr_search_response(&file.source)?);\n    self.search_cache.insert(query.to_string(), names.clone());\n    Ok(names)\n  }\n\n  async fn versions(&self, name: &str) -> Result<Arc<Vec<Version>>, AnyError> {\n    if let Some(versions) = self.versions_cache.get(name) {\n      return Ok(versions.clone());\n    }\n    let info = self\n      .resolver\n      .package_info(name)\n      .await\n      .ok_or_else(|| anyhow!(\"JSR package info not found: {}\", name))?;\n    let mut versions = info.versions.keys().cloned().collect::<Vec<_>>();\n    versions.sort();\n    versions.reverse();\n    let versions = Arc::new(versions);\n    self\n      .versions_cache\n      .insert(name.to_string(), versions.clone());\n    Ok(versions)\n  }\n\n  async fn exports(\n    &self,\n    nv: &PackageNv,\n  ) -> Result<Arc<Vec<String>>, AnyError> {\n    if let Some(exports) = self.exports_cache.get(nv) {\n      return Ok(exports.clone());\n    }\n    let info = self","sourceCodeStart":399,"sourceCodeEnd":435,"githubUrl":"https://github.com/denoland/deno/blob/89f33cbef296a2b287f323d42de54c871fa69c77/cli/lsp/jsr.rs#L399-L435","documentation":"The LSP's JSR completion provider (cli/lsp/jsr.rs:417) caches package metadata; when resolver.package_info(name) comes back None it wraps the miss in \"JSR package info not found: {name}\". None can mean the package genuinely doesn't exist on jsr.io, or the metadata fetch failed (offline, proxy, 5xx) and the resolver returned no info. It degrades editor completions (version lists, export completions) rather than program execution.","triggerScenarios":"Typing an import from a nonexistent/misspelled jsr package (\"jsr:@std/collectionss\") and requesting completions; requesting jsr completions while offline or behind a proxy that blocks jsr.io; a just-published package whose metadata hasn't propagated yet.","commonSituations":"Editor autocomplete for jsr: specifiers silently missing; corporate networks filtering jsr.io; typos in scope or package names during exploratory coding; local DENO_DIR caches in a bad state after a network interruption.","solutions":["Verify the package exists: `deno info jsr:@scope/package` or open https://jsr.io/@scope/package","Fix typos in the specifier — scope and package segments must match jsr.io exactly (lowercase, hyphens)","Check connectivity to jsr.io (proxy/VPN) and retry; the completion caches refill on later requests","Clear a poisoned cache if `deno info` also fails offline: remove the stale entry under DENO_DIR/remote or run `deno cache --reload` on the specifier"],"exampleFix":"// before\nimport { chunk } from \"jsr:@std/collectionss\";\n\n// after\nimport { chunk } from \"jsr:@std/collections\";","handlingStrategy":"retry","validationCode":"// CLI check before relying on editor completions\ndeno info jsr:@scope/package 2>/dev/null || echo \"package missing or unreachable\"","typeGuard":null,"tryCatchPattern":"// LSP-internal Result; user-side mitigation is verifying reachability then retrying\nfor (let i = 0; i < 3; i++) {\n  const ok = await probe(\"https://jsr.io/@scope/package/meta.json\");\n  if (ok) break;\n  await sleep(500 * 2 ** i);\n}","preventionTips":["Keep jsr.io reachable from CI and dev machines (check proxy rules for *.jsr.io)","Verify specifier spelling against jsr.io before assuming an LSP bug","Remember these errors only affect autocomplete — the CLI resolves jsr packages independently"],"tags":["lsp","jsr","completions","network"],"backgroundTag":null,"analyzedSha":"89f33cbef296a2b287f323d42de54c871fa69c77","analyzedAt":"2026-08-16T07:54:21.310Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}