Angular-cli: ng update broken for angular v 5.2 (cli v 1.7.4)

Created on 30 May 2019  路  13Comments  路  Source: angular/angular-cli

馃悶 Bug report

Command (mark with an x)


- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [x] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc

Is this a regression?

Hard to tell. It seems v8 release broke an existing version

Description

when trying to run ng update following theinstructionss on Angular Update Guide I get the follwoing error

```$ ng update @angular/cli
Your global Angular CLI version (8.0.0) is greater than your local
version (1.7.4). The local Angular CLI version is used.

To disable this warning use "ng config -g cli.warnings.versionMismatch false".
Error: Cannot update safely because packages have conflicting dependencies. Package @angular/platform-browser would need to match both versions "7.2.15" and "8.0.0, which are not compatible.
Cannot update safely because packages have conflicting dependencies. Package @angular/platform-browser would need to match both versions "7.2.15" and "8.0.0, which are not compatible.


## 馃敩 Minimal Reproduction
my package.json file

"dependencies": {
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
"@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "^5.2.0",
"bootstrap": "3.3.7",
"bootstrap-toggle": "^2.2.2",
"bpmn-js": "^3.2.3",
"classlist.js": "^1.1.20150312",
"codemirror": "^5.37.0",
"core-js": "^2.4.1",
"font-awesome": "^4.7.0",
"jexcel": "^1.5.0",
"jquery": "3.3.1",
"jwt-decode": "^2.2.0",
"less": "^3.0.4",
"pgparser": "^1.0.4",
"rxjs": "^5.5.6",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.19"
},
"devDependencies": {
"@angular-devkit/core": "0.3.2",
"@angular/cli": "~1.7.4",
"@angular/compiler-cli": "^5.2.0",
"@angular/language-service": "^5.2.0",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"autoprefixer": "^7.2.3",
"codelyzer": "^4.0.1",
"exports-loader": "^0.7.0",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "^5.4.0",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"typescript": "~2.5.3"
}
```

馃敟 Exception or Error


Error: Cannot update safely because packages have conflicting dependencies. Package @angular/platform-browser would need to match both versions "7.2.15" and "8.0.0, which are not compatible.
Cannot update safely because packages have conflicting dependencies. Package @angular/platform-browser would need to match both versions "7.2.15" and "8.0.0, which are not compatible.

馃實 Your Environment


Angular CLI: 1.7.4
Node: 11.8.0
OS: darwin x64
Angular: 5.2.11
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.7.4
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.5.3
webpack: 3.11.0

Anything else relevant?

schematicupdate low ng update DX broken triage #1 bufix

Most helpful comment

I got my angular updated the following way:

1 manually install a cli version 7.x.x locally npm install @angular/[email protected]

2 run ng update @angular/cli it now migrates the conf correctly

3 run ng update @angular/core that should get core to v8

4 run ng update @angular/cli goes from cli v7 -> v8

All 13 comments

Just for a note. I was updating a bunch of repos where the versions were all the same. Before v 8 was released the update guide worked fine.

I got my angular updated the following way:

1 manually install a cli version 7.x.x locally npm install @angular/[email protected]

2 run ng update @angular/cli it now migrates the conf correctly

3 run ng update @angular/core that should get core to v8

4 run ng update @angular/cli goes from cli v7 -> v8

@tuuling I tried your solution based on your reply you made to my issue on #14546. The first two steps worked correctly for me. But step 3, updating @angular/core, fails:

Package "@angular/http" has an incompatible peer dependency to "@angular/platform-browser" (requires "5.2.6" (extended), would install "8.0.0").
Package "@ng-bootstrap/ng-bootstrap" has an incompatible peer dependency to "@angular/forms" (requires "^5.0.2" (extended), would install "8.0.0").
Package "@angular/http" has an incompatible peer dependency to "@angular/core" (requires "5.2.6" (extended), would install "8.0.0").
Package "codelyzer" has an incompatible peer dependency to "@angular/compiler" (requires "^2.3.1 || >=4.0.0-beta <5.0.0" (extended), would install "8.0.0").
Package "@angular/http" has an incompatible peer dependency to "rxjs" (requires "^5.5.0", would install "6.5.2").
Package "@ng-bootstrap/ng-bootstrap" has an incompatible peer dependency to "@angular/common" (requires "^5.0.2" (extended), would install "8.0.0").

I fixed the ng-bootstrap issue by changing the version number in my package.json file to the most recent version of ng-bootstrap. To resolve the other issues, I used ng update @angular/core --force instead of step 3.

After doing this, I was able to update @angular/cli using your step 4 you, and the project seems to build correctly. So hopefully everything is converted correctly. I'm curious if you had to use the --force option or if you didn't encounter the same issues I did.

@ryanmcfall I did not have to use --force.
But if you have the new angular.json file instead of angular-cli.json and version 8 migrations also applied (added browserlist file and a changed tsconfig) you should be ok.

But I think you could have solved your problems by

1 removing @angular/http as it is deprecated in v8 anyways npm remove @angular/http

2 update ng-bootstrap manually to whatever supports v8 (as you did)

3 the same with codelyzer

I have same the need

Hi, I tried upgrading angular from version 5.2 to 8.0, and I followed @tuuling steps;
everything is ok until step 4, I had a typescript incompatibility error:
Package "@angular-devkit/build-angular" has an incompatible peer dependency to "typescript" (requires ">=3.1 < 3.5", would install "3.5.1")
My current typescript version is: "typescript": "^3.4.5"
Should I use to downgrade typescript version to 3.1?

@meksof Use Typescript 3.4.5 for now, you shouldn't have a warning for this. You can try ng update @angular/core --migrate-only --from 7 --to 8 or the "brute-force" method ng update --all --force

Thanks @tuuling good workaround. I had to use --force to get around incompatibility errors related to @angular/http. I'll put some extra verbosity in here in case anyone else is curious whether the errors they may get are the same (and now I'm being verbose about being verbose...):

ng update @angular/core
    Package "@angular/http" has an incompatible peer dependency to "@angular/platform-browser" .   
    (requires "5.2.11" (extended), would install "8.1.0").
    Package "@angular/http" has an incompatible peer dependency to "@angular/core" 
    (requires "5.2.11" (extended), would install "8.1.0").
    Package "@angular/http" has an incompatible peer dependency to "rxjs" 
    (requires "^5.5.0", would install "6.5.2").
    Incompatible peer dependencies found. See above.

Solved with ng update @angular/core --force

And

$ ng update @angular/cli
    Package "@angular/http" has an incompatible peer dependency to "@angular/core" 
    (requires "5.2.11" (extended), would install "8.2.0-next.0").
    Package "@angular/http" has an incompatible peer dependency to "@angular/platform-browser"
    (requires "5.2.11" (extended), would install "8.2.0-next.0").
    Incompatible peer dependencies found. See above.

Solved with ng update @angular/cli --force

The modified steps I took were

I got my angular updated the following way:

1 manually install a cli version 7.x.x locally npm install @angular/[email protected]

2 run ng update @angular/cli it now migrates the conf correctly

3 run ng update @angular/core --force that should get core to v8

4 run ng update @angular/cli --force goes from cli v7 -> v8

May the --force be with you.

Update these package to latest versions that is:

"@angular-devkit/build-angular": "^0.801.0", "@angular-devkit/build-ng-packagr": "^0.801.0",

i have this problem
ng-error

I have found it necessary to set these devDependency package versions manually after upgrading from Angular 7.5 to 8.0:
"@angular-builders/custom-webpack": "8.4.1", and "@angular-devkit/build-angular": "^0.800.3"
This resolved the above issue for me.

Thanks for reporting this issue. This issue is now obsolete due to changes in the recent releases. Please update to the most recent Angular CLI version.

If the problem persists after upgrading, please open a new issue, provide a simple repository reproducing the problem, and describe the difference between the expected and current behavior.

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

_This action has been performed automatically by a bot._

Was this page helpful?
0 / 5 - 0 ratings