如何從Angular 5 App升級到Angular 6

風靈使發表於2018-09-02

在這篇文章中,您將學習 如何更新或移植Angular 5應用程式(使用Angular 5.1或Angular 5.2版本)來使用Angular 6.0.0。

以下是一些涵蓋的要點:

  • 先決條件
  • 將Angular 5移植到Angular 6.0.0應用的升級/更新步驟

先決條件

在開始遷移之前,需要完成以下工作:

  • 確保您的NodeJS版本是Node 8或更高版本。
  • 確保你的程式碼使用HttpClientModuleHttpClient服務,而不是HttpModuleHttp服務。
  • 確保從@ angular /動畫而不是@ angular / core匯入動畫服務。

升級/更新Angular 5. *Angular 6.0.0

需要將以下命令作為將Angular 5.1Angular 5.2應用程式遷移到Angular 6. *的一部分來執行。

在全域性和本地更新Angular CLI:以下命令將全域性更新Angular CLI(-g選項)並在本地更新。

sudo npm install -g @angular/clisudo npm install @angular/cli

更新package.json:執行以下命令以使用Angular 6. *更新package.json檔案。

sudo ng update @angular/cli

這是我的package.json檔案在執行上述命令之前的樣子。請注意以下一些更改:

所有依賴關係和devDependencies從版本5.2。*更新到版本6.0.0rxjs從版本5.5.6遷移到版本6.1.0打字稿從版本2.5.3遷移到版本2.7.2

{"name": "rbot-ui","version": "0.0.0","license": "MIT","scripts": {"ng": "ng", "start": "ng serve", "build": "ng build --prod", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e"},"private": true,"dependencies": { "@angular/animations": "^5.2.10", "@angular/common": "^5.2.0", "@angular/compiler": "^5.2.0", "@angular/core": "^5.2.0", "@angular/forms": "^5.2.0", "@angular/http": "^5.2.0", "@angular/platform-browser": "^5.2.0", "@angular/platform-browser-dynamic": "^5.2.0", "@angular/router": "^5.2.0", "@angular/service-worker": "^5.2.0", "core-js": "^2.4.1", "rxjs": "^5.5.6", "zone.js": "^0.8.19"},"devDependencies": { "@angular/cli": "~1.7.3", "@angular/compiler-cli": "^5.2.0", "@angular/language-service": "^5.2.0", "@types/jasmine": "~2.8.3", "@types/jasminewd2": "~2.0.2", "@types/node": "~6.0.60", "codelyzer": "^4.0.1", "jasmine-core": "~2.8.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~2.0.0", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "^1.2.1", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "protractor": "~5.1.2", "ts-node": "~4.1.0", "tslint": "~5.9.1", "typescript": "~2.5.3"}}

這是執行ng update命令後新的package.json檔案的外觀。

{"name": "rbot-ui","version": "0.0.0","license": "MIT","scripts": {"ng": "ng", "start": "ng serve", "build": "ng build --prod", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e"},"private": true,"dependencies": { "@angular/animations": "6.0.0", "@angular/common": "6.0.0", "@angular/compiler": "6.0.0", "@angular/core": "6.0.0", "@angular/forms": "6.0.0", "@angular/http": "6.0.0", "@angular/platform-browser": "6.0.0", "@angular/platform-browser-dynamic": "6.0.0", "@angular/router": "6.0.0", "@angular/service-worker": "6.0.0", "core-js": "^2.4.1", "rxjs": "^6.1.0", "zone.js": "~0.8.26"},"devDependencies": { "@angular/cli": "6.0.0", "@angular/compiler-cli": "6.0.0", "@angular/language-service": "6.0.0", "@types/highcharts": "^5.0.22", "@types/jasmine": "~2.8.3", "@types/jasminewd2": "~2.0.2", "@types/node": "~6.0.60", "codelyzer": "^4.0.1", "jasmine-core": "~2.8.0", "jasmine-spec-reporter": "~4.2.1", "karma": "~2.0.0", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "^1.2.1", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "protractor": "~5.1.2", "ts-node": "~4.1.0", "tslint": "~5.9.1", "typescript": "2.7.2"}}
  • Update @ Angular / Core:執行以下命令來更新Angular核心。
sudo ng update @angular/core

Update @ Angular / Material:如果您在專案中使用了Angular Material,請執行以下命令更新@ angular / material

sudo ng update @angular/material

更新其他依賴項:執行諸如ng update之類的命令來識別和更新其他依賴項。如果一切都很好,您應該看到以下訊息:我們分析了您的package.json,並且所有內容似乎都是按順序排列的。幹得好!
更新@ Angular / CLI1.7.3到最新版本:Angular 6.0.0需要angular.json檔案。在情況下,你用的1.7角CLI的版本。* ,你將不得不升級。否則,你會得到錯誤,如本地工作區檔案(’angular.json‘)無法找到。

sudo ng update @angular/cli --migrate-only --from=1.7.3

如果使用script = true配置Typescript,則需要在tsconfig.json的編譯器選項中新增以下內容

"compilerOptions": {... "strictPropertyInitialization": false}

以上,你應該全部設定。執行命令,ng服務並確保應用程式編譯。

您可能會看到相關的錯誤沒有匯出成員’Observable‘。您可以使用以下命令擺脫此類錯誤:

通過執行以下命令來刪除不建議使用的RxJS 6功能:

npm install -g rxjs-tslintrxjs-5-to-6-migrate -p src/tsconfig.app.json

通過執行以下命令刪除rxjs-compat

npm uninstall rxjs-compat

您仍然可能會看到錯誤,例如在一個或多個軟體包中沒有匯出成員’Observable‘。您需要使用Angular 6.0.0將這些軟體包升級到更高版本。因此,我建議您在升級前仍然等待一段時間。

相關文章