繁体   English   中英

尽管软件包报告了相同的版本,但本地 npm package 和 repo 之间怎么能不匹配?

[英]How can you have a mismatch between a local npm package and repo though the packages report same version?

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

ng update @angular/cli @angular/core

我有一些模块导入现在正在中断。 如果我降级到 Typescript 3.7,它们就可以工作,但对于特定的 package,我需要 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

如果我 go 到我的本地 node_module/@angular_devkit/build-angular/package.json (v 0.901.6),我看到 ZEFE90A8E604A7C840E88D03A67F6 没有“无”

但是,在 @angular_devkit/build-angular (v 0.901.6) 的 github 的 package.json 中,less 不包括在内。

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

我试过删除 package-lock 和 node_modules 并重新安装。

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

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

除了 package-lock.json 之外,还有其他东西保留了安装命令,因为 package 搞砸了?

Angular 版本信息:

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 您不想在此处指定任何版本,除非您的目标是特定的。 默认情况下它将获取最新版本。

另一个很好的故障排除步骤是 go 通过他们的升级表格来确定升级项目需要采取的步骤:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM