Angular ng serve命令报错:发生未处理的异常:项目不存在。

44

我正在尝试使用ng serve升级本地angular开发环境,一天前它完美地工作,但是现在每次运行ng serve或npm start时都会抛出错误:

发生了未处理的异常:项目不存在。

我已经尝试在我的另一个不同项目中运行ng serve,它可以工作。

不确定是什么导致了这个错误。


你是否从正确的目录执行了 ng serve 命令? - Carsten
更新或重新安装Angular CLI。 - Amrit
1
我遇到了完全相同的错误,更新或重新安装angular/cli和angular本身都没有帮助。 - itsLex
14个回答

94

确保您的angular.json中的项目名称与从package.json脚本部分调用的名称相匹配。

这是我发现问题的方式。 我收到了以下错误:

An unhandled exception occurred: Project does not exist.
See "C:\Users\Adam\AppData\Local\Temp\ng-XcQsPs\angular-errors.log" for further details.

当我查看那个日志文件时,看到了这个:

[error] Error: Project does not exist.
    at WorkspaceNodeModulesArchitectHost.findProjectTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular-devkit\architect\node\node-modules-architect-host.js:94:23)
    at WorkspaceNodeModulesArchitectHost.getBuilderNameForTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular-devkit\architect\node\node-modules-architect-host.js:13:39)
    at RunCommand.runSingleTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\architect-command.js:175:55)
    at RunCommand.runArchitectTarget (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\architect-command.js:218:35)
    at RunCommand.run (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\commands\run-impl.js:14:25)
    at RunCommand.validateAndRun (C:\Users\Adam\source\repos\TechScore.Express\node_modules\@angular\cli\models\command.js:134:39)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

我打开了node-modules-architect-host.js:94:23并看到如下内容:

const projectDefinition = this._workspace.projects.get(target.project);
if (!projectDefinition) {
    throw new Error('Project does not exist.');
}

我不知道为什么他们会抛出这样的错误,而不告诉你哪个项目不存在。所以我将文件更改为如下:

throw new Error('Project does not exist. ' + target.project);

现在,当我构建时,我会得到这样一个错误:

An unhandled exception occurred: Project does not exist. client-app

最后我终于可以看到罪魁祸首是谁了!在全局中搜索"client-app",我发现它被从package.json中使用,但我的项目在angular.json中是"ClientApp"。将所有引用"ClientApp"的地方都改成"client-app",问题得以解决。


4
应该在那里添加这个小片段 ('项目不存在。' + target.project);,这将节省很多时间。 - kakurala
这是一个很棒的解决方案和解释!谢谢。 - nmrichards
当我按照您的建议更新我的 node-modules-architect-host.js 文件时,甚至没有出现新的错误消息?你有什么想法这是怎么发生的吗? - dfbenny
@dfbenny,我建议你再次确认修改的是正确的文件,修改后的文件没有被旧版本覆盖,并且没有使用缓存版本(可以尝试清除包缓存)。 - adam0101
自2020年8月起,项目名称已包含在_angular-devkit-architect-builds_中。 - GChuf
我尝试了这个,但错误变成了“项目目标不存在”。 - Mohamad Al Asmar

20

类似于adam0101提到的问题, 我通过更改项目名称解决了这个问题。实际上,package.json和angular.json的名称可以不同(至少对我来说是这样),但在angular.json中,命名是一致的。

与adam0101提到的问题类似,我通过更改项目名称解决了该问题。实际上,package.json和angular.json的名称可以不同(至少对我而言),但在angular.json中,命名是一致的。

  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "e-admin": {   ======NAME USED HERE=======
      "root": "",
...
"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "eAdmin:build"    ===NAME USED HERE====
          },
          "configurations": {
            "production": {
              "browserTarget": "eAdmin:build:production"  <===NAME USED HERE
            }
          }
        },

修改过的

 "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "e-admin": {
      "root": "",
...
"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "e-admin:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "e-admin:build:production"
            }
          }
        },

谢谢,你的回答帮助我不浪费时间。 - Omar Amaoun
同意,名称可以不同。实际上,你可能在 angular.json 中定义了一个命令,但是它甚至并不存在于 package.json 中,它仍然可以正常工作。 - Daniel Danielecki

9
请检查项目名称和默认项目是否相同。

testapp

{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": { // here 
    "testapp": {
        "root": "",
        "sourceRoot": "src",
        "projectType": "application",

.....................

"defaultProject": "testapp",

请尝试

npm install 

或者
yarn install

7

请确保您的angular.json文件包含以下配置

{
    "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
    "version": 1,
    "newProjectRoot": "projects",
    "projects": { // here 
        "testapp": {
            "root": "",
            "sourceRoot": "src",
            "projectType": "application",

这个应用程序包含我正在构建的自定义ng库。 - Jatinder

6

我在 angular.json 和 package.json 中匹配了数值,问题得到解决。

angular.json:

"projects": {
    "step1": {
      "projectType": "application",
      ...,
      ...,

package.json

{
  "name": "step1",
  ...,
  ...,

尝试了一下,但仍出错,项目“app”不存在,我已将名称更改为不是“app”。 - Mohamad Al Asmar

5

我通过将tsconfig.json中的目标从es2015更改为es5来解决了这个问题。


如果您在未添加或删除任何模块的情况下突然遇到报告问题...... 这种方法会起作用,点个赞! - Ahsan Aziz Abbasi

2

@adam0101 这个解决方案帮了我很多!谢谢!!!

但是我不得不添加一个console.log(target):

const projectDefinition = this._workspace.projects.get(target.project);
if (!projectDefinition) {
    console.log(target)
    throw new Error('Project does not exist.');
}

我在 package.json 文件中进行了全局搜索,发现项目名称有误:

错误截图:


2
我也曾遇到与 Angular Universal 相关的问题。对我来说,解决方案非常简单。正确的命令是 npm run dev:ssr 而不是 ng run dev:ssr。然而,启动服务的命令是 ng run myproject:serve-ssr。请注意 ng 和 npm 之间的差异。

2

在 angular.json 中,项目名称必须在每个需要使用的属性中保持一致。

同时,要注意大小写,甚至在路径中也要注意。在 angular.json 文件中,Windows 不会报错,但 Angular 会报错!


2

我复制了一个项目并更改了它的名称,结果出现了这个错误。通过在angular.json中将项目名称全部更改来解决该问题。

例如:


    "e2e": {
              "builder": "@angular-devkit/build-angular:protractor",
              "options": {
                "protractorConfig": "e2e/protractor.conf.js",
                "devServerTarget": "YourNewProjectName:serve"
              },
              "configurations": {
                "production": {
                  "devServerTarget": "YourNewProjectName:serve:production"
                }
              }
            },


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接