2017-04-03 86 views
1

我已经更新了我的angular2到当前版本,但我得到了以下错误:看起来有一个问题在茉莉花索引文件。Angular2到Angular4更新错误

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:37 A parameter initializer is only allowed in a function or constructor implementation.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:45 Cannot find name 'keyof'.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:40:51 '=' expected.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:45 A parameter initializer is only allowed in a function or constructor implementation.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:55 Cannot find name 'keyof'.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:42:61 '=' expected.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:58:41 Cannot find name 'Partial'.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:99:21 Cannot find name 'Partial'.

ERROR in [default] C:\src\Angular2\BuyPracticeTest_AV4\node_modules\@types\jasmine\index.d.ts:99:34 Cannot find name 'Partial'.

这是我的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" 
    } 
} 

回答

1

keyof在打字稿2.1引入,并在您的package.json我看到打字稿2.0.3。

不幸的是,@ angular-cli/ast-tools @ 1.0.16依赖于typescript 2.0.10,所以你可能无法升级到最新的typescript版本(2.2.2)。不过,您可能会降级茉莉花或@类型/茉莉花。

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

+0

让我试试。谢谢 – wal

+0

我已经更新了Typescript到2.2.2,但我得到了另一个错误。模块构建失败:TypeError:无法读取属性'排除'未定义 在applyDefaults \ awesome-typescript-loader \ src \ instance.ts:266:72) 在Object.ensureInstance – wal

+0

对不起,我更新了我的文章。我建议你逐步更新。我认为基于angular-cli,你只能升级到[email protected]。再次从头开始,并使用'npm过时' – pixelbits