{"record":{"id":"163efdcee3ceccd3","repo":"angular/angular-cli","slug":"project-name-options-project-doesn-t-not-exis","errorCode":null,"errorMessage":"Project name \"${options.project}\" doesn't not exist.","messagePattern":"Project name \"(.+?)\" doesn't not exist\\.","errorType":"exception","errorClass":"SchematicsException","httpStatus":null,"severity":"error","filePath":"packages/schematics/angular/app-shell/index.ts","lineNumber":160,"sourceCode":"    switch (name.kind) {\n      case ts.SyntaxKind.Identifier:\n        return name.getText() === propertyName;\n      case ts.SyntaxKind.StringLiteral:\n        return name.text === propertyName;\n    }\n\n    return false;\n  })[0];\n\n  return property;\n}\n\nfunction addServerRoutingConfig(options: AppShellOptions, isStandalone: boolean): Rule {\n  return async (host: Tree) => {\n    const workspace = await getWorkspace(host);\n    const project = workspace.projects.get(options.project);\n    if (!project) {\n      throw new SchematicsException(`Project name \"${options.project}\" doesn't not exist.`);\n    }\n\n    const configFilePath = isStandalone\n      ? join(project.sourceRoot ?? 'src', 'app/app.config.server.ts')\n      : getServerModulePath(host, project.sourceRoot || 'src', 'main.server.ts');\n\n    if (!configFilePath || !host.exists(configFilePath)) {\n      throw new SchematicsException(`Cannot find \"${configFilePath}\".`);\n    }\n\n    const configSourceFile = getSourceFile(host, configFilePath);\n    const functionCall = findNodes(\n      configSourceFile,\n      ts.isCallExpression,\n      /** max */ undefined,\n      /** recursive */ true,\n    ).find(\n      (n) => ts.isIdentifier(n.expression) && n.expression.getText() === 'provideServerRendering',","sourceCodeStart":142,"sourceCodeEnd":178,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/schematics/angular/app-shell/index.ts#L142-L178","documentation":"`addServerRoutingConfig` looks up the target Angular Workspace project by `options.project`. If the workspace definition contains no project with that exact name, it throws this SchematicsException (the message itself has a grammar typo, \"doesn't not exist\").","triggerScenarios":"Running the app-shell schematic with `--project` set to a name that is not a key under `projects` in angular.json/workspace (typo, renamed project, or omitted default when multiple projects exist).","commonSituations":"Multi-project monorepos where the default project differs; project renamed in angular.json while scripts still use the old name; case-sensitive mismatch between the CLI flag and the workspace key.","solutions":["Run with `--project=<exact-name>` using a name listed in angular.json `projects`","Run `ng generate app-shell` inside the project directory or set `defaultProject`/cli default correctly","Fix typos and case in the --project value"],"exampleFix":"// before\nng g app-shell --project=my-appp\n// after\nng g app-shell --project=my-app","handlingStrategy":"validation","validationCode":"const workspace = JSON.parse(fs.readFileSync('angular.json', 'utf8'));\nif (!workspace.projects?.[options.project]) {\n  throw new Error(`Project \"${options.project}\" not in angular.json. Available: ${Object.keys(workspace.projects).join(', ')}`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  await ngGenerate('app-shell', { project: projectName });\n} catch (e) {\n  if (e.message.includes(\"doesn't not exist\")) {\n    console.error(`Unknown project \"${projectName}\" — check angular.json projects key`);\n  } else throw e;\n}","preventionTips":["Copy project names exactly from angular.json (names are case-sensitive)","Pass --project explicitly in monorepos with multiple projects","Update scripts after renaming a project"],"tags":["angular","schematics","workspace","project"],"backgroundTag":"project-not-found","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}