职位名称“..getProjectMetadata”不存在。

152

我将 Angular 升级到 v9 后,尝试回滚到 v8 时遇到了这个错误。我已经尝试了以下操作:

  • 卸载全局 angular/cli
  • 卸载 angular/cli
  • 回滚至上一个 package.json
  • 删除 node_modules 文件夹
  • 删除 repo

但仍然出现了这个错误。

我的堆栈跟踪(stacktrace)是:

An unhandled exception occurred: Job name "..getProjectMetadata" does not exist.
See angular-errors.log for further details.

angular-errors.log :

[error] Error: Job name "..getProjectMetadata" does not exist.
    at Observable._subscribe (/Front/node_modules/@angular-devkit/core/src/experimental/jobs/simple-scheduler.js:350:23)
    at Observable._trySubscribe (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/Observable.js:44:25)
    at Observable.subscribe (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/Observable.js:30:22)
    at /Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/util/subscribeTo.js:22:31
    at Object.subscribeToResult (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/util/subscribeToResult.js:10:45)
    at SwitchMapSubscriber._innerSub (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/switchMap.js:65:54)
    at SwitchMapSubscriber._next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/switchMap.js:55:14)
    at SwitchMapSubscriber.Subscriber.next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/Subscriber.js:66:18)
    at SwitchMapSubscriber.notifyNext (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/switchMap.js:86:26)
    at InnerSubscriber._next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/InnerSubscriber.js:28:21)
    at InnerSubscriber.Subscriber.next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/Subscriber.js:66:18)
    at /Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/util/subscribeTo.js:17:28
    at Object.subscribeToResult (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/util/subscribeToResult.js:10:45)
    at SwitchMapSubscriber._innerSub (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/switchMap.js:65:54)
    at SwitchMapSubscriber._next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/switchMap.js:55:14)
    at SwitchMapSubscriber.Subscriber.next (/Front/node_modules/@angular-devkit/core/node_modules/rxjs/internal/Subscriber.js:66:18)

ng --version:

显示Angular CLI的版本号。

Angular CLI: 8.3.18
Node: 12.15.0
OS: darwin x64
Angular: 8.2.13
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.803.18
@angular-devkit/build-angular     0.900.1
@angular-devkit/build-optimizer   0.900.1
@angular-devkit/build-webpack     0.900.1
@angular-devkit/core              8.3.18
@angular-devkit/schematics        8.3.18
@angular/cdk                      8.2.3
@angular/cli                      8.3.18
@angular/material                 8.2.3
@ngtools/webpack                  9.0.1
@schematics/angular               8.3.18
@schematics/update                0.803.18
rxjs                              6.5.3
typescript                        3.5.3
webpack                           4.41.2

6
在运行 npm audit fix 后,我遇到了这个错误。尽管我锁定了依赖项,但它仍然升级到了Angular 9,而我并不想要这个版本。像往常一样,在Angular的主要版本发布时,升级非常不方便且繁琐。我建议如果不是绝对必要的话,还是保持在Angular 8上,因为很多依赖项还没有更新到最新版本,会导致很多错误。 - Michelangelo
1
我在执行了 npm audit fix 后撤销了更改,然后执行了 npm i && npm update && npm audit fix && npm audit fix。所以基本上是先更新,然后再进行审计修复。这对我起作用了。 - doptrois
12个回答

392

看起来是与@angular-devkit/build-angular有关的问题。 尝试将其降级到特定版本:

npm i @angular-devkit/build-angular@0.803.24

2
@AtifMajeed 你应该使用版本0.803.24,而不是0.900.4。 - Ben
7
对我来说有效,但我不明白为什么,我没有更新Angular。我运行了npm audit fix - Germán Acosta
19
今天我在运行 npm audit fix 后也开始遇到了这个错误。我对 npm audit fix 的理解是它会自动检测所有存在漏洞的包并升级为已修复的版本,但它不应该自动进行任何破坏性的升级,像这样导致意外后果。因此,该软件包维护者一定有些错误,这导致 npm audit 无法识别出这种破坏性更改。 - rineez
1
最新版本为 npm install @angular-devkit/build-angular@0.803.26 链接 https://www.npmjs.com/package/@angular-devkit/build-angular/v/0.803.26 - aunlead
1
现在会有很多项目使用完全相同的@angular-devkit/build-angular@0.803.24!XD - Stack Underflow
显示剩余8条评论

19

还需要运行 npm i @angular-builders/custom-webpack@8.4.1 --save

对于我来说,Occian的回答不够,我还需要将@angular-builders/custom-webpacklatest更改为8.4.1,因为它也依赖于build-angular。以下是解决方法:

npm list @angular-devkit/build-angular

reports-web-client@0.0.0 C:\projects\2778\reports-web-client
+-- @angular-builders/custom-webpack@9.1.0
| `-- @angular-devkit/build-angular@0.901.1
`-- @angular-devkit/build-angular@0.803.8
这意味着我有两个版本的软件包,这就是为什么错误仍然会出现的原因。

这个解决方案有效并且完全解决了我的问题。然而,它让我考虑使用 npm-force-resolutions。通过使用这个工具,我们不需要被这样的多版本所困扰。我们可以仅在 package.json 中加入 "resolutions": { "@angular-devkit/build-angular": "0.803.8" } 来解决它。它还可以保护此特定版本免受 npm audit fix 的影响。 - Yas Ikeda

10

就个人而言,最好的解决方案是:

ng update @angular/cli @angular/core

为什么?因为早晚你需要升级到 Angular 9+,而其他解决方案只会让你降级。

今天我也面临同样的问题,直到我使用了这个解决方案,它完美地解决了我的问题。


6

当前版本的Angular请使用以下版本:

@angular-devkit/build-angular@0.8.9 v6-lts

@angular-devkit/build-angular@0.13.10 v7-lts

@angular-devkit/build-angular@0.803.29 v8-lts

@angular-devkit/build-angular@0.901.13 v9-lts

@angular-devkit/build-angular@0.1002.1 v10-lts

查看最新版本请访问@angular-devkit/build-angular


5
该命令可以暂时解决问题:
npm i @angular-devkit/build-angular@0.803.24

我的Jenkins构建需要我运行npm audit fix命令来下载依赖项。但是这个命令会导致同样的错误再次出现。
有没有人知道如何让audit命令忽略angula-devkit?


5

如果您使用 npm audit fix 命令,请找到您尝试修复的软件包,并将其恢复到稳定版本,并注意漏洞。


3

我通过打开

package.json文件

并更新下一行来解决了这个问题。

@angular-devkit/build-angular": "^0.803.8"

然后运行

执行 npm i 命令


2
这个命令可以解决问题。
npm i @angular-devkit/build-angular@0.803.24

2
我遇到了相同的问题,并通过将 @angular-devkit/build-angular 版本降级到 0.803.24 来解决,就像 Occian Fumnanya Dia 在他的答案中所说的那样。
如果降级后仍然出现相同的错误,请尝试删除 platforms 文件夹并使用 ionic cordova run <platform> 重新运行。将 <platform> 替换为 androidios
这将使用新内容重新创建 plaforms 文件夹。
希望能对您有所帮助。

1

不要删除整个 node_modules 文件夹,只需将其重命名并尝试使用

npm install 
sudo npm install --unsafe-perm //for macOS

请查看下面我的Angular包版本 -
"@angular-devkit/build-angular": "0.802.0",
"@angular-devkit/core": "8.2.0",
"@angular/animations": "8.2.0",
"@angular/cli": "8.2.0",
"@angular/common": "8.2.0",
"@angular/compiler": "8.2.0",
"@angular/compiler-cli": "8.2.0",
"@angular/core": "8.2.0",

实际上删除整个node_modules文件夹解决了我的问题。我尝试了这个帖子中提出的其他方法,但仍然出现错误。 - Louis

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