javascript - 更新到 Angular 5

标签 javascript node.js angular npm angular5

如何更新到 Angular 5? 这是来 self 的 package.json:

"dependencies": {
    "@angular/animations": "5.0.0",
    "@angular/common": "5.0.0",
    "@angular/compiler": "5.0.0",
    "@angular/core": "5.0.0",
    "@angular/forms": "5.0.0",
    "@angular/http": "5.0.0",
    "@angular/platform-browser": "5.0.0",
    "@angular/platform-browser-dynamic": "5.0.0",
    "@angular/router": "5.0.0",
    "@types/jwt-decode": "^2.2.1",
    "bootstrap": "^3.3.7",
    "bootstrap-sass": "^3.3.7",
    "classlist.js": "^1.1.20150312",
    "core-js": "^2.4.1",
    "intl": "^1.2.5",
    "jquery": "^3.2.1",
    "jwt-decode": "^2.2.0",
    "rxjs": "^5.4.2",
    "zone.js": "^0.8.14"
},
"devDependencies": {
    "@angular/cli": "1.4.0-rc.2",
    "@angular/compiler-cli": "5.0.0",
    "@angular/language-service": "5.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "angular-ide": "^0.9.31",
    "codelyzer": "~3.1.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "node-sass": "^4.5.3",
    "protractor": "~5.1.2",
    "raw-loader": "^0.5.1",
    "sass-loader": "^6.0.6",
    "sw-precache": "^5.2.0",
    "ts-node": "~3.2.0",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
}

当我运行 npm install 时出现此错误

npm ERR! Windows_NT 6.1.7601 npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" npm ERR! node v6.11.2 npm ERR! npm v3.10.10 npm ERR! code ETARGET

npm ERR! notarget No compatible version found: @angular/common@5.0.0 npm ERR! notarget Valid install targets: npm ERR! notarget 5.0.0-rc.0, 5.0.0-beta.7, 5.0.0-beta.6, 5.0.0-beta.5, 5.0.0-beta.4, 5.0.0-beta.3, 5.0.0-beta.2, 5.0.0-beta.1, 5.0.0-beta.0, 4.4.4, 4.4.3, 4.4.2, 4.4.1, 4.4.0-RC.0, 4.3.6, 4.3.5, 4.3.4, 4.3.3, 4.3.2, 4.3.1, 4.3.0, 4.3.0-rc.0, 4.3.0-beta.1, 4.3.0-beta.0, 4.2.6, 4.2.5, 4.2.4, 4.2.3, 4.2.2, 4.2.1, 4.2.0, 4.2. 0-rc.2, 4.2.0-rc.1, 4.2.0-rc.0, 4.2.0-beta.1, 4.2.0-beta.0, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.1.0-rc.0, 4.1.0-beta.1, 4.1.0-beta.0, 4.0.3, 4.0.2, 4.0.1, 4.0.0, 4.0.0- rc.6, 4.0.0-rc.5, 4.0.0-rc.4, 4.0.0-rc.3, 4.0.0-rc.2, 4.0.0-rc.1, 4.0.0-rc.0, 4.0.0-beta.8, 4.0.0-beta.7, 4.0.0-beta.6, 4.0.0-beta.5, 4.0.0-beta.4, 4.0.0-beta.3, 4.0.0-beta.2, 4.0.0-beta.1, 4.0.0-beta.0, 2.4.10, 2.4.9, 2.4.8, 2.4.7, 2.4.6, 2.4.5, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.3.0-rc.0, 2.3.0-beta.1, 2. 3.0-beta.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.2.0-rc.0, 2.2.0-beta.1, 2.2.0-beta.0, 2.1.2, 2.1.1, 2.1.0, 2.1.0-rc.0, 2.1.0-beta.0, 2.0.2, 2.0.1, 2.0.0, 2.0.0-r c.7, 2.0.0-rc.6, 2.0.0-rc.5, 2.0.0-rc.4, 2.0.0-rc.3, 2.0.0-rc.2, 2.0.0-rc.1, 2.0.0-rc.0, 0.0.0-7, 0.0.0-6, 0.0.0-5, 0.0.0-4, 0.0.0-3, 0.0.0-2, 0.0.0-1, 0.0.0-0 npm ERR! notarget npm ERR! notarget This is most likely not a problem with npm itself. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! notarget npm ERR! notarget It was specified as a dependency of 'gizza' npm ERR! notarget

我知道 Angular 5 仍处于测试阶段,但我想对其进行测试。

编辑:自 2017 年 11 月 1 日起,版本 5.0.0 现在确实存在

最佳答案

截至目前,Angular 5 已于 2017 年 11 月 1 日正式发布, 所以对于那些想要将旧的 Angular 应用程序更新到 Angular 5 的人:

1) Angular 团队还发布了 handy tool尽可能简单地从任何版本升级到 Angular 5。

2) 您必须将所有 Angular 包升级到 5.0 版,运行以下命令:

npm install @angular/animations@^5.0.0 @angular/common@^5.0.0 @angular/compiler@^5.0.0 @angular/compiler-cli@^5.0.0 @angular/core@^5.0.0 @angular/forms@^5.0.0 @angular/http@^5.0.0 @angular/platform-browser@^5.0.0 @angular/platform-browser-dynamic@^5.0.0 @angular/platform-server@^5.0.0 @angular/router@^5.0.0 zone.js@^0.8.4 @angular/upgrade@^5.0.0 typescript@2.4.2 rxjs@^5.5.2

3) Angular 5 现在还依赖于 TypeScript 2.4.2 和 RxJS 5.5.2,因此您还必须升级这些包。

npm install typescript@2.4.2 --save-exact 

4) 如果您依赖日期、货币、小数或百分比管道,在 5 中您会看到格式的细微变化。对于使用除 en-us 以外的语言环境的应用程序,您需要从 @angular/common/i18n_data/locale_fr 和 registerLocaleData(local) 导入它以及可选的 locale_extended_fr。 有关管道破坏更改的更多信息: https://stackoverflow.com/a/47263949/2810015

5) 使用实现而不是扩展任何生命周期事件:确保您不使用扩展 OnInit,或将扩展与任何生命周期事件一起使用。而是使用工具。

6) 从 HttpModule 和 Http 服务切换到 HttpClientModule 和 HttpClient 服务。 HttpClient 简化了默认的人体工程学(您不再需要映射到 json 并删除任何不再需要的 map(res => res.json()) 调用。)现在支持类型化返回值和拦截器。

7) 在 RxJS 5.5 中导入操作符的推荐方式是从 rxjs/operators 中。

import { map, filter, mergeMap, tap } from 'rxjs/operators';

我试图解释更多here . https://onlyforcoder.blogspot.in/2017/11/angular-5-upgrade-your-project-To-Angular5.html

关于javascript - 更新到 Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497743/

相关文章:

php - socket.io + php + 目前这是一个现实的解决方案吗

php - 根据之前的下拉选择动态填充最多 3 个下拉菜单

node.js - 我无法在 ubuntu 上安装 @angular/cli

javascript - 突出显示textarea angular 8中的特定单词

javascript - 创建一个通用函数以将其用于其他数据

javascript - 如何显示动态添加内容的提示框?

node.js - 是否有可能在 Github Codespaces 中更新 node.js?

javascript - 如何等待来自 forEach 循环的多个异步调用?

angular - 如何使用@ngrx/store 通过 ID 存储相同状态的多个版本?

angular - 如何让 FormControl 重新检查具有响应式表单的 FormGroup 的验证