将Angular 6更新至7 - 依赖警告和typescript错误

3

我使用了这个链接来将我的简单Angular前端升级到Angular 7:

升级到Angular 7

在更新过程中,我收到了几个有关package.json和polyfills.ts文件的警告:

UPDATE package.json (1313 bytes)
npm WARN @ngtools/webpack@6.1.5 requires a peer of typescript@~2.4.0 || ~2.5.0 || ~2.6.0 || ~2.7.0 || ~2.8.0 || ~2.9.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/compiler@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/core@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/platform-browser-dynamic@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/platform-browser@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/common@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 69 packages, removed 4 packages, updated 16 packages and moved 2 packages in 43.395s
UPDATE package.json (1315 bytes)
UPDATE src/polyfills.ts (3165 bytes)
npm WARN codelyzer@4.2.1 requires a peer of @angular/compiler@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/core@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/platform-browser-dynamic@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/platform-browser@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@4.2.1 requires a peer of @angular/common@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

我还遇到了 TypeScript (3.0.1) 的这个错误:

Error:Initialization error (angular 2 language service). Cannot read property 'CommandTypes' of undefined

有没有人能提供一种解决这些依赖警告和typescript错误的方法?我需要手动更改依赖吗?如果是,我需要一个示例说明如何...


Angular实际上有一个官方的更新工具,你应该使用它。它使得更新过程非常简单和容易。请尝试使用Angular Update - SiddAjmera
请告诉我您经历了哪些步骤,否则很难知道。您是否执行了 ng update 命令?您的 packages.json 文件是什么样子的? - Qortex
我从我的链接执行了以下ng命令: ng update @angular/cli @angular/core - student18
2个回答

2
问题在于您没有这两个软件包的最新版本。
1. 您需要将软件包Codelyzer更新到最新版本。`ng update --all`应该可以完成此操作,否则您也可以手动编辑您的`package.json`文件。
您可以在此处看到,此软件包的最新版本(4.5.0)已与Angular 7兼容,因此您需要使用它而不是您的4.2.1版本。
2. 对于您的@ngtools/webpack,您需要使用最新版本(请参见此处,它是7.0.2)。您可能没有在packages.json中明确指定此软件包,因此在运行ng update之前,您可能只需要执行`npm cache clean -f`。
如果仍然无法解决问题,建议您删除您的node_modules目录,这将强制npm install从存储库中的最新版本重新构建所有内容,假设您正确地更新了您的package.json(手动或通过ng update)。

你解决我的依赖问题的方案很有效 :) 我运行了npm cache clean -f,然后运行了ng update --all。不过我仍然遇到了typescript错误: Error:Initialization error (angular 2 language service). Cannot read property 'CommandTypes' of undefined - student18
1
好的,标记为答案吧 :) 同时更新Typescript。另外还有一个问题,你需要查看它抛出的代码,如果你无法解决它,可能需要在StackOverflow上提问另一个问题。 - Qortex

0

你删除了旧的node_modules文件夹吗?如果没有,请删除它,如果有package-lock.json文件也一并删除。清理npm缓存npm cache clean -f然后尝试安装所有的包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接