打字稿和节点更新后重复的标识符错误

时间:2016-09-28 09:05:18

标签: typescript npm protractor

当我尝试构建时,我收到以下错误(以及许多其他类似的错误):

typings / selenium-webdriver / selenium-webdriver.d.ts(12,11):错误TS2300:重复标识符'Driver'。

更新到typescript v2后,此错误开始出现。 我在index.ts

中引用了tds.d.ts

任何想法如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

很可能是selenium-webdriver * .ts文件不止一次被包含在内。查看此链接(下面的文档摘要):

https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types

  

@types,typeRoots和types

     

默认情况下,所有可见的“@types”包都包含在您的   汇编。任何封闭文件夹的node_modules / @类型中的包   被认为是可见的;具体来说,这意味着包内   ./node_modules/@types/,../node_modules/@types/,   ../../node_modules/@types/,等等。

在您的控制台输出中,如果向下滚动并在"重复标识符'驱动程序""错误消息,您可能会看到类似的内容:

  

node_modules/@types/selenium-webdriver/index.d.ts(12,11):错误   TS2300:重复的标识符'驱动程序'。

在你的tsconfig.json文件中,你可以使用设置" typeRoots",这是一个显式"类型"的数组。编译期间要考虑的根目录/位置。我的猜测是你会希望你的看起来像以下之一,以防止自动加载多个类似" typeRoots":

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": ["./typings"]
  },
  "exclude": [
    "node_modules",
    "**/*-aot.ts"
  ]
}

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": ["./node_modules/@types"]
  },
  "exclude": [
    "node_modules",
    "**/*-aot.ts"
  ]
}

还有一些其他可能感兴趣的tsconfig.json属性,例如"文件","排除","包含"和"类型"