【问题标题】:Angular2 to Angular4 updates errorAngular2 到 Angular4 更新错误
【发布时间】:2017-08-27 19:23:14
【问题描述】:

我已将我的 angular2 更新到当前版本,但出现以下错误: jasmine 索引文件中似乎存在问题。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:37 中的错误 参数初始化器只允许在函数或构造函数实现中使用。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:45 中的错误 找不到名称“keyof”。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:51 中的错误 '=' 预期。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:45 中的错误 参数初始化器只允许在函数或构造函数实现中使用。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:55 中的错误 找不到名称“keyof”。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:61 中的错误 '=' 预期。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:58:41 中的错误 找不到名称“部分”。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:99:21 中的错误 找不到名称“部分”。

[默认] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:99:34 中的错误 找不到名称“部分”。

这是我的 package.json 文件:

{
  "name": "buy-practice-test",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng serve",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "^2.4.10",
    "@angular/compiler": "^2.4.10",
    "@angular/core": "^2.4.10",
    "@angular/forms": "^2.4.10",
    "@angular/http": "^2.4.10",
    "@angular/platform-browser": "^2.4.10",
    "@angular/platform-browser-dynamic": "^2.4.10",
    "@angular/router": "^3.4.10",
    "angular2-datatable": "^0.5.3",
    "core-js": "^2.4.1",
    "ng2-pagination": "^0.5.1",
    "ng2-table": "^1.3.2",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.23"
  },
  "devDependencies": {
    "@types/jasmine": "^2.5.47",
    "@types/node": "^6.0.68",
    "angular-cli": "1.0.0-beta.18",
    "codelyzer": "1.0.0-beta.1",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "4.0.9",
    "ts-node": "1.2.1",
    "tslint": "3.13.0",
    "typescript": "~2.0.3"
  }
}

【问题讨论】:

    标签: angular


    【解决方案1】:

    keyof 是在 Typescript 2.1 中引入的,在您的 package.json 中我看到了 Typescript 2.0.3。

    不幸的是,@angular-cli/ast-tools@1.0.16 依赖于 typescript 2.0.10,因此您可能无法升级到最新的 typescript 版本 (2.2.2)。但是,您可以降级 jasmine 或 @types/jasmine。

    我建议您以较小的步骤进行升级。即使用npm outdated 根据所有依赖项查看可以升级到的版本。一次升级几个库 - 定期检查以确保您没有破坏任何东西。在你升级了你能做的之后,接下来将@angular 升级到 4.0。

    【讨论】:

    • 我已将 Typescript 更新到 2.2.2,但又遇到了另一个错误。模块构建失败:TypeError:无法在 Object.ensureInstance 的 applyDefaults \awesome-typescript-loader\src\instance.ts:266:72 处读取未定义的属性“排除”
    • 对不起,我已经更新了我的帖子。我建议你逐步更新。我认为基于angular-cli,只能升级到typescript@2.0.10。重新从头开始,使用npm outdated
    • 现在可以使用了。多谢!。我已经手动更新了所有内容。
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2017-06-27
    • 1970-01-01
    • 2016-07-15
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多