错误:数据路径“ .builders ['app-shell']”应具有必需的属性“ class”


159

运行我的应用程序时出现此错误。这是我的申请的详细信息。

Angular CLI: 7.3.3 
Node: 10.15.1 
Angular: 7.2.7 
@angular-devkit/architect -0.13.3 
@angular-devkit/build-angular- 0.800.1 
@angular-devkit/build-optimizer - 0.800.1 
@angular-devkit/build-webpack - 0.800.1 
@angular-devkit/core -7.3.3 
@angular-devkit/schematics -7.3.3 
@angular/cli -7.3.3 
@ngtools/webpack -8.0.1 
@schematics/angular -7.3.3 
@schematics/update 0.13.3 
rxjs 6.3.3 
typescript 3.2.4 
webpack 4.30.0

我已经尝试过清理缓存。


这是我的应用程序的详细信息。Angular CLI:7.3.3节点:10.15.1 Angular:7.2.7 @ angular-devkit / architect -0.13.3 @ angular-devkit / build-angular- 0.800.1 @ angular-devkit / build-optimizer-0.800.1 @ angular-devkit / build-webpack-0.800.1 @ angular-devkit / core -7.3.3 @ angular-devkit / schematics -7.3.3 @ angular / cli -7.3.3 @ ngtools / webpack -8.0.1 @schematics / angular -7.3.3 @ schematics / update 0.13.3 rxjs 6.3.3打字稿3.2.4 webpack 4.30.0
Ekta Gandhi

1
此问题通常是由于软件包不兼容所致。您最近更新了package.json吗?
迪皮卡

7
终于我找到了解决方案。1)首先通过给出简单的命令git checkout package.json消除package.json文件中的所有更改。2)然后在@ angular-devkit / build-angular-的package.json中进行更改后〜〜0.800.1(添加尾部而不是上限)3)然后运行命令rm -rf node_modules / 4)然后通过给出命令npm干净捕获清理缓存-f 5)最后运行命令npm install。这对我有用。
Ekta Gandhi

1
以上,npm clean cache -f是错误的,应该是npm cache clean --force
法比恩·哈达迪

2
我发现我已将nvm设置为使用错误版本的节点,需要使用nvm use 12.14.01(在我的情况下)正确设置该节点的版本
QuietSeditionist

Answers:


172

在您的package.json中,更改devkit构建器。

"@angular-devkit/build-angular": "^0.800.1",

"@angular-devkit/build-angular": "^0.10.0",

这个对我有用。
祝好运。


31
做到了@angular-devkit/build-angular": "0.13.4",它奏效了。
Dimuthu

3
完善。使用“ 0.13.4”,然后运行npm build
SouravOrii

1
登陆此处是因为我收到有关在js-yaml <3.13.1中检测到的安全漏洞的通知。更新后,我收到此错误消息。无论如何,将其"^0.10.0"修复。
Alesh Houdek

11
0.13.4对我有用,但是请确保先删除node_modules文件夹,删除package-lock.json,然后运行npm install。似乎可以解决所有问题。
Indy-Jones

5
该解决方案有效,但是它是错误的,您应该升级角度和角度cli版本。检查下面的@ovangle答案
Francesco Borzi

101

以下对我有用

npm uninstall @angular-devkit/build-angular
npm install @angular-devkit/build-angular@0.13.0

2
尽管此答案很直接,但也缺乏资源或参考。人们盲目地直接安装特定的软件包版本可能会破坏他们的整个项目。请清楚并提供一些参考。
扎基

70

这里的每个人都专注于将@ angular-devkit / build-angular降级为@angular 7.x版本以实现兼容性,但是他们应该做的是升级@angular/cli到angular 8版本。

问题是系统cli仍然停留在旧版本,并且不会自动更新 ng update(因为它不在角度控制的项目之内),因此在尝试访问角度库时,它处于不兼容的版本。

降级@angular-devkit/build-angular只会导致更多的不兼容性。

npm i --global @angular/cli@latest

将解决问题而不会破坏其他地方。


6
这应该是答案。我发生此错误是因为我从已更新为Angular 8的分支中拉出,但我的计算机的角度仍为Angular7。–
terahertz

19
当您npm audit fix在仍在进行的项目上进行时,可能会发生此问题,angular@7因此有时降级@angular-devkit/build-angular是正确的答案
Xesenix

4
跑步npm audit fix有时会导致制动变化。我们应该改为npm audit了解结果并使用npm i --save-dev <package@version>
Naren 19'Oct

1
@zhuhang这显然是错误的。您可以期望将全局CLI升级为与最近几个版本向后兼容,而不必一定将其与向前兼容。
ovangle

1
@ovangle我没有提到向前兼容。我是说人们不应盲目地升级或降级,尤其是angular-cli版本。应该确定其当前的CLI版本,并使用与该CLI相匹配的devkit。如果要升级devkit软件包,则完全升级CLI是正确的。
zhuhang.jasper

61

每个人都在关注将@angular-devkit/build-angular版本降级到X或升级@angular/cli版本为Y或最新。

但是,请不要盲目建议a X or Y or latest作为答案。(尽管通常,降级devkit应该更好,因为升级CLI是一项重大更改)

选择正确的版本始终取决于您的Angular(angular-cli)版本。

Angular CLI v8.3.19 -> 0.803.19
Angular CLI v8.3.17 -> 0.803.17
Angular CLI v7.3.8 -> 0.13.8
Angular CLI v6-lts -> 0.8.9

有关其他特定版本,请访问:https : //github.com/angular/angular-cli/tags。找到您的CLI版本,并在某些标签中确实提及@angular-devkit/**软件包的相应版本。

注意:如果要升级CLI版本,首先应该考虑升级到最新的主要版本,而不是简单地跳到下一个主要版本。


3
不知道为什么这个答案被否决了;这是一个很好的建议。实际上,它解决了我的问题(因为我已经将devkit/build-angular软件包升级到,0.803.x但是将Angular CLI留在了7.3.x。由于我不打算升级Angular CLI,所以我回到了使用0.13.xdevkit版本
Gregg L

2
@GreggL实际上,我的回答比大多数支持者更好。其他答案只是建议盲目的升级/降级。就像我的答案所暗示的那样,正确的CLI / devkit版本是相关的,但是没有人给出F,因为开发社区就是这样。
zhuhang.jasper 19/12/9

你是救星,tx!但是您对cli 7.0.6有任何想法吗?它没有写在那里
ErhanYaşar

2
要补充这个好答案:在我自己的项目中,我将其包含@angular/cli在dev依赖项中,并确保它与匹配@angular-devkit/build-angular。这样,我可以使用多个CLI版本维护多个项目。如果这样做ng s,它将使用您的计算机CLI,如果这样做npm start(作为脚本package.json执行ng serve,它将实际上使用本地CLI,它将使用正确的CLI启动此应用程序。希望对您
有所

截至今天,针对Angular 9进行了更新(来源NPM):0.901.1->最新,0.1000.0-next.0->下一个,0.8.9-> v6-lts,0.803.26-> v8-lts,0.13
.10-

30

您的@ angular-devkit与@ angular / cli版本不兼容,因此只需安装较旧的版本,例如:

npm install @angular-devkit/build-angular@0.13.8 @angular-devkit/build-ng-packagr@0.13.8

想要发布相同的。看到0.12.4漂浮着,但这对我不起作用。
M. Doe

@ M.Doe正确的版本取决于您的1angular-cli`版本。看到这个:stackoverflow.com/a/59043569/6122411
zhuhang.jasper

22

尝试升级到Ng8后出现相同问题,由于依赖问题而失败。

npm uninstall @angular-devkit/build-angular

然后我用

npm install @angular-devkit/build-angular@0.12.4

解决它...


有时此解决方案不可行,因为它的版本可能不是某人的要求。删除包锁jsonnpm i @angular-devkit/build-angular
Tejashree

14

我遇到了同样的问题,但是由于Ekta Gandhi的评论,我得以解决:

终于我找到了解决方案。

1)首先通过简单的命令git checkout package.json消除package.json文件中的所有更改。

2)然后在@ angular-devkit / build-angular-中的package.json中进行更改后~~ 0.800.1(添加尾部而不是上限)

3)然后运行命令rm -rf node_modules /

4)然后通过给命令npm clean cache -f清除catch

5)最后运行命令npm install。这对我有用。

....随着Dimuthu提出的修改

到达@ angular-devkit / build-angular“:” 0.13.4“并成功了。


应该注意的是,使用延迟加载的组件时,@ angular-devkit / build-angular的版本“ 0.13.4”存在问题。为了避免该问题,用户需要更新其@ angular-devkit / build-angular软件包...所以在这里要折衷...
Adan

7

当我安装Angular 8时,这发生在我身上,有一些我无法解决的不兼容性。我不得不降级,因为我在每个版本中都忙得不可开交,直到找到一个可行的版本为止。

首先,TypeScript已过时,默认安装添加了对TypeScript 3.1.6的引用,并且需要3.4或更高版本。

npm install typescript@">=3.4 <3.5"

其次,使用devkit 0.800.1或0.800.1总是会导致不兼容。我尝试了多种组合,但是我不确定它是否完全兼容,特别是因为我使用的靴子稍微老了一点,还无法升级。

最后,我尝试降级(转到package.json并找到devDependencies),直到其中一个起作用。

@angular-devkit/build-angular": "0.13.4"

我确定您的问题是依赖版本,但我无法告诉您哪个版本。尝试降级。


虽然有效,但我建议,@angular-devkit/build-angular": "0.13.8"因为它似乎是最新的有效版本
M. Doe

非常感谢。从引导程序版本或依赖项来看,似乎不让我高于0.13.4,但它对许多人都有用
Maximiliano Rios

使用0.13.8(基本上是低于0.800。*的任何值),我得到:An unhandled exception occurred: Could not find the implementation for builder @angular-devkit/build-angular:browser See "/tmp/ng-5iKcHN/angular-errors.log" for further details.使用最新版本时,标题出现错误。现在要做什么?
DominikSzymański,

7

尝试从以下位置更新package.json文件

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

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

然后在命令行中运行npm install。


6

我也遇到了这个问题,对我来说,进行更多更新时会出现更多问题。

最终或多或少地对我有用的是删除角度cli并通过以下步骤重新安装它:

npm uninstall -g @angular/cli
npm cache clean --force
npm install -g @angular/cli

这帮助了我源代码:如何卸载angular / cli


3

我在package.json文件中做了此更改,然后它起作用了。

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

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



2

我也遇到了这个问题,并且花了很多时间来解决它,我已经尝试了上述所有选项,但是没有任何解决办法解决我的问题。发生此问题是由于angular / cli和angular-devkit的版本不匹配,所以我做了以下事情:

  1. 手动更改的文件版本:

    @ angular-devkit / build-angular“:” ^ 0.13.9“,

    @angular/cli": "~7.0.3", //这是针对Angular7的,对于Angular8的:0.803.23

  2. 删除package-lock.json

  3. 执行:npm install

它解决了我的问题。


1

在我这边是包裹

@ angular-devkit / build-angular

@ angular-devkit / build-ng-packagr

不是同一版本,正在更新build-ng-packagr至同一版本以build-angular解决我的问题。



0

您可以简单地审核您的代码,然后

#sudo su 
rm -rf package-lock.json node_modules
sudo npm i --save 

-1

您有不兼容的依赖项,我通过将package.json更改为另一个项目angular来解决了这个问题,然后在更改为packag.json之后,仅更改了您拥有的依赖项版本。

更改后写:

-npm链接

-npm服务-o

然后就可以了:)

   {
   "name": "angular-jwt-auth",
   "version": "0.0.0",
   "scripts": {
   "ng": "ng",
   "start": "ng serve",
   "build": "ng build",
   "test": "ng test",
   "lint": "ng lint",
   "e2e": "ng e2e"
   },
   "private": true,
   "dependencies": {
   "@angular/animations": "^7.1.4",
   "@angular/cdk": "^7.3.1",
   "@angular/common": "~7.1.0",
   "@angular/compiler": "~7.1.0",
   "@angular/core": "~7.1.0",
   "@angular/forms": "~7.1.0",
   "@angular/http": "^6.1.10",
   "@angular/material": "^7.3.1",
   "@angular/platform-browser": "~7.1.0",
   "@angular/platform-browser-dynamic": "~7.1.0",
   "@angular/router": "~7.1.0",
   "@ng-bootstrap/ng-bootstrap": "^4.2.0",
   "@types/jquery": "^3.3.29",
   "angular-6-datatable": "^0.8.0",
   "bootstrap": "^4.3.1",
   "chart.js": "^2.8.0",
   "core-js": "^2.5.4",
   "jquery": "^3.4.1",
   "rxjs": "~6.3.3",
   "zone.js": "~0.8.26"
    },
   "devDependencies": {
   "@angular-devkit/build-angular": "~0.11.0",
   "@angular/cli": "~7.1.0",
   "@angular/compiler-cli": "~7.1.0",
   "@angular/language-service": "~7.1.0",
   "@types/chart.js": "^2.7.53",
   "@types/jasmine": "^2.8.16",
   "@types/jasminewd2": "^2.0.6",
   "@types/node": "~8.9.4",
   "codelyzer": "~4.2.1",
   "jasmine-core": "~2.99.1",
   "jasmine-spec-reporter": "~4.2.1",
   "karma": "~3.1.1",
   "karma-chrome-launcher": "~2.2.0",
   "karma-coverage-istanbul-reporter": "~2.0.1",
   "karma-jasmine": "~1.1.2",
   "karma-jasmine-html-reporter": "^0.2.2",
   "protractor": "~5.4.0",
   "ts-node": "~7.0.0",
   "tslint": "~5.11.0",
   "typescript": "~3.1.6"
   }

我已经尝试过了,它也给我同样的错误错误:数据路径“”不应具有其他属性(es5BrowserSupport)。
Ekta Gandhi

-1

我有这个问题,这就是我解决的方法。问题主要是您的Angular版本不支持构建的Node.js版本。因此,最好的解决方案是将Node.js升级到最新的稳定版本。

对于Node.js的全新升级,我建议使用n。如果您使用的是Mac。

npm install -g n
npm cache clean -f
sudo n stable
npm update -g

现在检查您是否已更新:

node -v
npm -v

有关更多详细信息,请检查此链接:此处


很高兴知道我为什么得到这份票。这是一个干净的答案,没有尝试采取一些“变通办法”
arielb

由于它与节点版本无关,因此应为angular-cli版本。
zhuhang.jasper

我只是有这个问题,我不认为它是angular-cli版本,它与angular-cli有关,但受节点版本影响。
arielb

-1

以上给出的答案中没有一个对我有用。

我最初的目标是使用VSCode 修复我的项目中有时进行的恒定编译

我尝试了很多方法,但没有任何效果-该项目将无法编译!

最后,我发现这里的问题是:

我从公司的存储库中克隆了该项目,并且在对项目的现有部分进行编码时,从那里的所有代码都必须与依赖项的版本完全一致。

最后,我删除了先前克隆的项目AGAIN(多次),并克隆了AGAIN(也几次),然后DID NOTHING BUT RAN“ npm install”,一切都开始工作

我在这里学到的教训是:

有时,当您尝试解决一些问题时,情况会变得更糟(我遇到的一个问题是项目的CONSTANT COMPILING)。

但这并不意味着我们无法尝试解决问题。我们可以。但是,当一切变得混乱时,我们最好使用原始代码。

幸运的是,我的项目的不断编译仅发生一次,而不是所有时间。它不是固定的,但我必须忍受,否则我的项目甚至无法编译。


-2

重新安装@ angular-devkit / build-angular @ 0.13.4

npm install @angular-devkit/build-angular@0.13.4 --save-dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.