{"record":{"id":"779a133dd8b18315","repo":"denoland/deno","slug":"missing-name-in-config","errorCode":null,"errorMessage":"Missing name in config","messagePattern":"Missing name in config","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/pack/package_json.rs","lineNumber":68,"sourceCode":"  exports: Option<serde_json::Value>,\n  // BTreeMap (not HashMap): serde_json walks BTreeMap in sorted key\n  // order, so the generated package.json — and therefore the tarball\n  // bytes — are identical across runs even with multiple deps. See the\n  // `reproducible` spec test.\n  #[serde(skip_serializing_if = \"Option::is_none\")]\n  dependencies: Option<BTreeMap<String, String>>,\n}\n\npub fn generate_package_json(\n  config_file: &ConfigFile,\n  version: &str,\n  files: &[ProcessedFile],\n) -> Result<String, AnyError> {\n  let name = config_file\n    .json\n    .name\n    .as_ref()\n    .ok_or_else(|| deno_core::anyhow::anyhow!(\"Missing name in config\"))?;\n\n  let dts_set = dts_available_set(files);\n\n  let exports = convert_exports(&config_file.json.exports, &dts_set)?;\n  let (main, types) =\n    extract_main_and_types(&config_file.json.exports, &dts_set);\n\n  // Collect dependencies from all files. BTreeMap so the serialized\n  // package.json keys come out in sorted order (reproducibility).\n  let mut dependencies: BTreeMap<String, String> = BTreeMap::new();\n\n  // Merge dependencies from all processed files\n  for file in files {\n    for (name, version) in &file.dependencies {\n      dependencies.insert(name.clone(), version.clone());\n    }\n  }\n","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/denoland/deno/blob/89f33cbef296a2b287f323d42de54c871fa69c77/cli/tools/pack/package_json.rs#L50-L86","documentation":"While generating the package.json that `deno pack` embeds in the tarball, Deno requires the package name from deno.json. A config without \"name\" cannot produce a valid package.json, so generation aborts.","triggerScenarios":"`deno pack` on a deno.json lacking \"name\" — the same precondition as the default-filename error, hit on the package.json generation path.","commonSituations":"Unnamed workspace members; config files that only define tasks/imports; incremental adoption of pack in existing repos.","solutions":["Add \"name\" to the deno.json of the package being packed","Verify you are packing the intended workspace member whose config actually carries identity"],"exampleFix":"// deno.json before\n{ \"version\": \"1.0.0\", \"exports\": \"./mod.ts\" }\n// after\n{ \"name\": \"pkg\", \"version\": \"1.0.0\", \"exports\": \"./mod.ts\" }","handlingStrategy":"validation","validationCode":"grep -q '\"name\"' deno.json || { echo 'deno.json is missing \"name\" — pack cannot generate package.json' >&2; exit 2; }\ndeno pack","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep name and version on every publishable/packable member config","Run a config preflight in the pack task"],"tags":["pack","config","package-json","deno-json"],"backgroundTag":null,"analyzedSha":"89f33cbef296a2b287f323d42de54c871fa69c77","analyzedAt":"2026-08-16T07:54:21.310Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}