{"record":{"id":"392e6f333e33d099","repo":"apple/pkl","slug":"nopackagedefinedbyproject-392e6f","errorCode":"noPackageDefinedByProject","errorMessage":"ErrorMessages.create(\"noPackageDefinedByProject\", project.projectFileUri)","messagePattern":"ErrorMessages\\.create\\(\"noPackageDefinedByProject\", project\\.projectFileUri\\)","errorType":"error_code","errorClass":"CliException","httpStatus":null,"severity":"error","filePath":"pkl-cli/src/main/kotlin/org/pkl/cli/CliProjectPackager.kt","lineNumber":62,"sourceCode":"      CliTestRunner(\n        cliOptions.copy(sourceModules = normalizeApiTests, projectDir = project.projectDir),\n        testOptions = testOptions,\n        consoleWriter = consoleWriter,\n        errWriter = errWriter,\n      )\n    try {\n      testRunner.run()\n    } catch (e: CliTestException) {\n      throw CliException(ErrorMessages.create(\"packageTestsFailed\", project.`package`!!.uri()))\n    }\n  }\n\n  override fun doRun() {\n    val projects = buildList {\n      for (projectFile in normalizedProjectFiles) {\n        val project = loadProject(projectFile)\n        project.`package`\n          ?: throw CliException(\n            ErrorMessages.create(\"noPackageDefinedByProject\", project.projectFileUri)\n          )\n        runApiTests(project)\n        add(project)\n      }\n    }\n    // Require that all local projects are included\n    projects.forEach { proj ->\n      proj.dependencies.localDependencies().values.forEach { localDep ->\n        val projectDir = Path.of(localDep.projectFileUri()).parent\n        if (projects.none { it.projectDir == projectDir }) {\n          throw CliException(\n            ErrorMessages.create(\"missingProjectInPackageCommand\", proj.projectDir, projectDir)\n          )\n        }\n      }\n    }\n    ProjectPackager(","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-cli/src/main/kotlin/org/pkl/cli/CliProjectPackager.kt#L44-L80","documentation":"Thrown by CliProjectPackager.doRun when a loaded PklProject has no `package` block. Only projects that define a package (name, version, etc. inside the `package {...}` section of PklProject) can be packaged with `pkl project package`. The check is `project.package ?: throw`, so the packaging aborts with the noPackageDefinedByProject message containing the project file URI.","triggerScenarios":"Running `pkl project package <PklProject>` where the PklProject file only contains a `project {}` (or no) declaration and lacks a `package {}` block; passing a dependency-only project file to the packager.","commonSituations":"Trying to package a plain project (consumer-only) that was never given package metadata; an old PklProject predating packaging support; deleting the package block by accident.","solutions":["Add a `package { name = ...; version = ...; ... }` block to the PklProject file","Confirm you are packaging the correct project file (the one meant to be published)","Regenerate the PklProject with `pkl project init` and re-add package metadata"],"exampleFix":"// before (PklProject)\nproject {\n  name = \"myproj\"\n}\n// after\nproject {\n  name = \"myproj\"\n}\npackage {\n  name = \"myproj.pkg\"\n  version = \"1.0.0\"\n}","handlingStrategy":"validation","validationCode":"grep -q '^package {' PklProject || echo 'no package block: cannot package'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add a package block before attempting to publish","Only run `pkl project package` on projects intended as packages"],"tags":["cli","pkl","packaging","config"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}