angular-cli icon indicating copy to clipboard operation
angular-cli copied to clipboard

ng update deletes node_modules before ensuring it will succeed

Open ericeslinger opened this issue 4 years ago • 4 comments

🐞 Bug report

Command (mark with an x)

ng update @angular/cli @angular/cdk ...

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

Is this a regression?

Not sure. Might be half bug, half feature request.

Description

When updating from angular 12 to 13, the following sequence of events happened:

  1. ng update to determine dependencies
  2. ng update ...
  3. after determining dependencies and updating my package.json file, the script seems to delete node_modules
  4. the npm install step triggered by ng update fails due to a peer dependency conflict
  5. this is the FR/bug this part of the script should do a dry run and abort before deleting node_modules if the npm install with the updated package.json file will fail. Ideally add more details and suggestions here, and roll back the change to package.json.
  6. Now re-running ng update a second time will note no installed dependencies, because apparently the script checks node_modules and not package.json.
  7. The actual fix for the deeper bug is some conflict in peer dependencies between the older 12 installation of architect and build-angular and the updated package.json file. Reverting package.json to head (the 12 installation), running npm install to re-install the now-missing node_modules directory, then deleting package-lock.json, will allow the ng update command to run to completion. If this is a common issue, adding some help text in that regard would be nice.

🌍 Your Environment

NOTE this is post-upgrade, the bug happened during a 12->13 upgrade.


Angular CLI: 13.0.2
Node: 16.10.0
Package Manager: npm 7.24.0
OS: linux x64

Angular: 13.0.1
... animations, cdk, common, compiler, compiler-cli, core, forms
... material, platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.2
@angular-devkit/build-angular   13.0.2
@angular-devkit/core            13.0.2
@angular-devkit/schematics      13.0.2
@angular/cli                    13.0.2
@angular/fire                   7.2.0
@schematics/angular             13.0.2
rxjs                            6.6.7
typescript                      4.4.4

Anything else relevant?

ericeslinger avatar Nov 14 '21 22:11 ericeslinger

I had an issue with this also, didn't think of rerunning update after deleting the contents of package.json, I ended up copying them to another location and installing them a few at a time with the new version. Something involving @angular-devkit/build-angular has a bad peer dependency listed. I thought I had a log file to share but it inadvertently got overwritten.

ardunster avatar Nov 19 '21 23:11 ardunster

Same issue with update from Angular 10 to 11. node_modules folder gone! :( :(

From https://update.angular.io/?l=2&v=10.0-12.0 npx @angular/cli@11 update @angular/core@11 @angular/cli@11 Only issues a one-line error message "Repository is not clean. ...". But I am not even using git. Stackoverflow suggests to add --allow-dirty It runs with that. I get npm WARN old lockfile The package-lock.json file was created with an old version of npm, Not sure if that is important. Then plenty of errors related to @angular-devkit/[email protected]

npm ERR! While resolving: [email protected]
npm ERR! Found: @angular-devkit/[email protected]
npm ERR! node_modules/@angular-devkit/build-angular
npm ERR!   dev @angular-devkit/build-angular@"~0.1102.15" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! dev @angular-devkit/build-angular@"~0.1102.15" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: @angular/[email protected]
npm ERR! node_modules/@angular/compiler-cli
npm ERR!   peer @angular/compiler-cli@"^11.0.0 || ^11.2.0-next" from @angular-devkit/[email protected]
npm ERR!   node_modules/@angular-devkit/build-angular
npm ERR!     dev @angular-devkit/build-angular@"~0.1102.15" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users\andreas2\AppData\Local\npm-cache\eresolve-report.txt for a full report.

eresolve-report.txt

asteidle70 avatar Dec 02 '21 11:12 asteidle70

I think that removing a node_modules folder is:

  • time-consuming
  • counter-productive (my understanding is: npm heavily relies on a package-lock.json while installing, so removing node_modules brings to us very little or nothing in terms of a profit)

Den-dp avatar Feb 17 '22 00:02 Den-dp

I cannot believe the request to solve this issue is treated like a feature request, instead of just fixing this clearly undesired behaviour ?

nikita-fuchs avatar Oct 05 '23 15:10 nikita-fuchs