尽管本地 npm 包和存储库报告相同的版本,但如何使本地 npm 包和存储库不匹配?



>我刚刚更新了 Angular 8.2.4 -> 9.1.6 和 Typescript 3.4 -> 3.8.3 使用

ng update @angular/cli @angular/core

我有许多模块导入现在正在中断。如果我降级到 Typescript 3.7,它们会起作用,但我需要 3.8 用于特定包。

我在这里深入研究的特定模块导入错误:

Module not found: Error: Can't resolve 'zlib' in '<project>/pangeav4/node_modules/request'

"npm ls request"表示请求正在 Angular 9.1.6 的依赖项中使用。

├─┬ @angular-devkit/build-angular@0.901.6
│ └─┬ less@3.11.1
│   └── request@2.88.2 
├─┬ @angular/cli@9.1.6
│ └─┬ universal-analytics@0.4.20
│   └── request@2.88.2  deduped

如果我转到我的本地node_module/@angular_devkit/build-angular/package.json(v 0.901.6(,我看到包"less"是一个依赖项。

但是,在 github 的 @angular_devkit/build-angular (v 0.901.6( 的 package.json 中,根本没有包含更少。

如果版本相同,我的本地副本怎么可能与 github 不同?

我尝试删除软件包锁定和node_modules并重新安装。

我做了一个新的角度项目,由于全局cli,它默认为v8。我认为问题一定是全局和本地 cli 不匹配(尽管 ng 更新仍在继续,只是注意到它正在使用临时版本进行安装(。我将全局 cli 更新为 9 并创建了一个没有问题的新项目。

从现有项目添加依赖项后,问题又回来了。但是,从 package.json 中删除这些依赖项、删除节点模块和锁以及重新安装并不能修复新项目。

除了package-lock.json之外,是否有其他东西保留了任何软件包的安装命令?

角度版本信息:

Angular CLI: 9.1.6
Node: 10.18.0
OS: darwin x64
Angular: 9.1.9
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router, service-worker
Ivy Workspace: No
Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.801.3
@angular-devkit/build-angular     0.901.6
@angular-devkit/build-optimizer   0.901.6
@angular-devkit/build-webpack     0.901.6
@angular-devkit/core              9.1.6
@angular-devkit/schematics        9.1.6
@angular/cdk                      9.2.4
@angular/cli                      9.1.6
@angular/fire                     5.4.2
@angular/material                 9.2.4
@ngtools/webpack                  9.1.6
@schematics/angular               9.1.6
@schematics/update                0.901.6
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.43.0

从听起来,您可能已经手动安装了TypeScript并搞砸了一些依赖树。我会尝试还原您的更改并通过ng update运行升级。FWIW,我的 9.1 项目已经"typescript": "3.7.5"

当你运行ng update时,它将为您提供摘要,然后您必须开始逐个完成和升级。通常,您必须做的第一件事是运行它:

ng update @angular/cli @angular/core.除非针对特定内容,否则您不想在此处指定任何版本。默认情况下,它将获取最新版本。

另一个好的故障排除步骤是浏览其升级表单,以确定需要采取哪些步骤才能升级项目:

https://update.angular.io/

Angular CLI: 9.1.4
Node: 10.16.2
OS: darwin x64
Angular: 9.1.0
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router
Ivy Workspace: Yes
Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.900.7
@angular-devkit/build-angular     0.900.7
@angular-devkit/build-optimizer   0.900.7
@angular-devkit/build-webpack     0.900.7
@angular-devkit/core              9.0.7
@angular-devkit/schematics        9.1.4
@angular/cdk                      9.2.2
@angular/cli                      9.1.4
@angular/material                 9.2.2
@ngtools/webpack                  9.0.7
@schematics/angular               9.1.4
@schematics/update                0.901.4
rxjs                              6.5.5
typescript                        3.7.5
webpack                           4.41.2

相关内容

最新更新