0

Ionic YouTube 官方频道上有一个很棒的教程视频,它将向您展示升级到 Ionic 5 和 Angular 9 的最佳情况。

然而,对于我去年制作的简单原型应用程序(只是一个让我重新排序列表的演示),我尝试更新但几乎立即脱轨。

事实证明,它正在使用"@angular/core": "^7.2.2"它破坏了应用程序,ionic serve因为它期待 Angular 8。

然后我尝试运行,ng upgrade但遇到不兼容的对等依赖关系codelyzer@ionic/angular-toolkit@angular/http

所以我尝试先升级到 Angular 8,npm i @angular/core@"~8.x.x"但失败了npm i zone.js@~0.9.1

我怎样才能成功更新到最新最好的?

4

1 回答 1

1

因此,对于来自 angular 7 的人来说,对于这个项目来说,正确的升级命令似乎是:

npm i @ionic/angular@latest
npm i zone.js@~0.9.1
npm i @angular/core@"~8.x.x"
npm i @ionic/angular-toolkit@latest
npm i codelyzer@latest
npm remove @angular/http
ng update @angular/core @angular/cli --allow-dirty

它终于更新了一切。但是我确实看到了一个警告说Package not installed: "--allow-dirty". Skipping.

然而,在那之后我敢于尝试ionic build,但由于这个错误而失败,这让我又卡了 15 分钟:

zone-flags.ts is missing from the TypeScript compilation.

似乎polyfills.ts使用了.ts包含中的扩展名,这破坏了编译。

我改变了这一行polyfills.ts

import './zone-flags.ts';

对此:

import './zone-flags';

并且它被编译了。

但是做到了ionic serve吗?

不,没有。

浏览器在控制台中显示了这一点:

Error: Angular JIT compilation failed: '@angular/compiler' not loaded!

所以经过一番搜索,我发现如果你打开main.ts然后添加

import '@angular/compiler';

接近顶峰,那么世界将再次变得正确和美好……

...除非您的项目随后需要解决标记破坏性更改,但您只能靠自己

于 2020-02-14T12:26:43.167 回答