从Angular 2升级到4后输入错误

时间:2017-03-25 14:42:16

标签: angular typescript

我正在将Angular项目(使用Angular CLI创建)从2升级到4.我已按照升级说明进行操作,但现在项目无法编译,因为类似错误,如下所示:

ERROR in /mypath/node_modules/typescript/lib/lib.dom.d.ts (6945,11): 
Duplicate identifier 'Headers'.

为了进行调试,我再次使用CLI创建了一个全新的Angular 4项目进行比较。新创建的项目编译没有错误。

当我压缩有问题的文件(lib.dom.d.ts)时,它们完全相同,但在升级后的项目中,错误在VS代码中突出显示,但在新项目中不突出显示(左侧已升级) ,右边是新项目):

compare

(有趣的是,我在新项目的滚动区域中有很多红色指示,他们试图告诉我什么?)

我认为我可以弄清楚这两个项目之间的区别是什么来解决问题,但我找不到。

两个项目都返回

./node_modules/tslint/bin/tslint -v
4.5.1

./node_modules/typescript/bin/tsc -v
Version 2.2.1

ng -v
@angular/cli: 1.0.0
node: 7.4.0
os: darwin x64
@angular/animations: 4.0.0
@angular/common: 4.0.0
@angular/compiler: 4.0.0
@angular/compiler-cli: 4.0.0
@angular/core: 4.0.0
@angular/forms: 4.0.0
@angular/http: 4.0.0
@angular/platform-browser: 4.0.0
@angular/platform-browser-dynamic: 4.0.0
@angular/platform-server: 4.0.0
@angular/router: 4.0.0
@angular/cli: 1.0.0

tsconfig.json是相同的:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  }
}

所以问题还有什么可能导致行为上的差异?

3 个答案:

答案 0 :(得分:1)

在package.json中确保打字稿版本为2.1.x或更高版本。

"typescript": "~2.1.0"

如果有帮助,请参阅此链接:angular2 -> 4

答案 1 :(得分:0)

为了搜索者的利益,如果您使用的是Visual Studio 2015,则可能还需要“VisualScript 2015的Typescript 2.2扩展”才能很好地编写打字稿。

enter image description here

答案 2 :(得分:0)

供参考,问题是dependencies中的devDependenciespackage.json都有'打字稿'。从依赖项中删除它解决了这个问题。