{"record":{"id":"a889d8d4f818fbab","repo":"denoland/deno","slug":"is-missing-version-field","errorCode":null,"errorMessage":"{} is missing 'version' field","messagePattern":"(.+?) is missing 'version' field","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/publish/mod.rs","lineNumber":492,"sourceCode":"            );\n          }\n        }\n        Ok(diagnostics_by_folder.into_graph())\n      }\n    }\n  }\n\n  async fn prepare_publish(\n    &self,\n    package: &JsrPackageConfig,\n    graph: Arc<deno_graph::ModuleGraph>,\n    diagnostics_collector: &PublishDiagnosticsCollector,\n  ) -> Result<Rc<PreparedPublishPackage>, AnyError> {\n    let deno_json = &package.config_file;\n    let config_path = deno_json.specifier.to_file_path().unwrap();\n    let root_dir = config_path.parent().unwrap().to_path_buf();\n    let version = deno_json.json.version.clone().ok_or_else(|| {\n      deno_core::anyhow::anyhow!(\n        \"{} is missing 'version' field\",\n        deno_json.specifier\n      )\n    })?;\n    let (scope, name_no_scope) = registry::parse_package_name(&package.name)?;\n    let file_patterns = package.member_dir.to_publish_config()?.files;\n\n    let tarball = deno_core::unsync::spawn_blocking({\n      let diagnostics_collector = diagnostics_collector.clone();\n      let module_content_provider = self.module_content_provider.clone();\n      let cli_options = self.cli_options.clone();\n      let config_path = config_path.clone();\n      let config_url = deno_json.specifier.clone();\n      let has_license_field = package.license.is_some();\n      let current_package_name = package.name.clone();\n      move || {\n        let root_specifier =\n          ModuleSpecifier::from_directory_path(&root_dir).unwrap();","sourceCodeStart":474,"sourceCodeEnd":510,"githubUrl":"https://github.com/denoland/deno/blob/89f33cbef296a2b287f323d42de54c871fa69c77/cli/tools/publish/mod.rs#L474-L510","documentation":"JSR requires every published package to carry an explicit version in its deno.json — there is no per-publish version argument on the registry path. During prepare_publish the package's deno.json is read; a missing \"version\" field aborts that package.","triggerScenarios":"`deno publish` (including --dry-run) for a workspace member or single package whose deno.json omits \"version\".","commonSituations":"Single-package repos assuming publish takes a version flag; workspaces where only the root config has a version; release tooling that has not stamped the version yet.","solutions":["Add a semver \"version\" (e.g. \"1.0.0\") to the deno.json of the package being published","In workspaces, ensure each publishable member's config carries its own version","Let the CLI stamp it during publish with --set-version 0.2.0, or bump via your release tool before publishing"],"exampleFix":"// deno.json before\n{ \"name\": \"@scope/pkg\", \"exports\": \"./mod.ts\" }\n// after\n{ \"name\": \"@scope/pkg\", \"version\": \"1.0.0\", \"exports\": \"./mod.ts\" }","handlingStrategy":"validation","validationCode":"grep -q '\"version\"' deno.json || { echo 'deno.json is missing \"version\" — required for publish' >&2; exit 2; }\ndeno publish --dry-run","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat name and version as mandatory fields in every publishable member config","Let release tooling stamp the version, then run deno publish --dry-run as the gate"],"tags":["publish","config","version","jsr","deno-json"],"backgroundTag":null,"analyzedSha":"89f33cbef296a2b287f323d42de54c871fa69c77","analyzedAt":"2026-08-16T07:54:21.310Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}