令人困惑的#34;重复的标识符"打字稿错误信息

时间:2015-07-09 15:54:50

标签: typescript

为什么我会收到此类错误以及更多此类错误?我正在添加一个指向repo的链接以及下面的关键代码片段。我认为我对依赖性和"包括"有一个基本的误解。链接作品。

csvproc(master)> tsc
node_modules/typescript/bin/lib.core.d.ts(83,5): error TS2300: Duplicate identifier 'configurable'.
node_modules/typescript/bin/lib.core.d.ts(84,5): error TS2300: Duplicate identifier 'enumerable'.
node_modules/typescript/bin/lib.core.d.ts(85,5): error TS2300: Duplicate identifier 'value'.
node_modules/typescript/bin/lib.core.d.ts(86,5): error TS2300: Duplicate identifier 'writable'.

All code can be found here

我的tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": false,
        "outDir": "built/",
        "sourceMap": true,
        "target": "es5"
    }
}

我的tsd.json:

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "node/node-0.10.d.ts": {
      "commit": "6387999eb899d0ba02d37dd8697647718caca230"
    },
    "should/should.d.ts": {
      "commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
    }
  }
}

我的tsd.d.ts:

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "node/node-0.10.d.ts": {
      "commit": "6387999eb899d0ba02d37dd8697647718caca230"
    },
    "should/should.d.ts": {
      "commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
    }
  }
}

18 个答案:

答案 0 :(得分:104)

这是因为两件事的结合:

  

如果没有"文件"属性存在于tsconfig.json中,编译器默认包含包含目录和子目录中的所有文件。当一个"文件"指定了property,只包含那些文件。

修复

明确列出filesinclude https://basarat.gitbooks.io/typescript/docs/project/files.html

答案 1 :(得分:66)

更新:Typings版本1.0更改了输出结构,以下答案与1.0之前版本有关。

如果您在tsconfig.json中使用Typings和exclude,则可能会遇到重复类型的问题,需要类似以下内容:

{
  "exclude": [
    "typings/browser.d.ts",
    "typings/browser",
    "node_modules"
  ]
}
  

为了简化与TypeScript的集成,会生成两个文件 - typings / main.d.ts和typings / browser.d.ts - 它们引用项目中安装的所有类型,一次只能使用其中一个。

因此,根据您需要的版本,您应该排除(或包含)"浏览器"或者#34; main"键入文件,但不是两者,因为这是重复项的来源。

This Typings issue更多地讨论了它。

答案 2 :(得分:23)

如果您已在typings文件夹

下单独安装了打字
String website = "http://www.svensktnaringsliv.se/english/publications/?start=" +maxPage;
Document docOne = Jsoup.connect(website).get();
Elements els = docOne.select("a.subHover");
for (Element el : els ){
  System.out.println(el);
}

答案 3 :(得分:16)

问题通过简单解决:

  1. 正在删除node_modules文件夹
  2. 运行npm install以获取所有包含正确版本的软件包
  3. 在我的情况下,更改Git分支后出现问题,其中新分支使用不同的节点模块集。旧分支使用TypeScript v1.8,新版本v2.0

答案 4 :(得分:15)

我刚遇到这个问题。当我运行npm start时,我收到了一堆重复的标识符错误。

<强> SOLUTION:

从项目根文件夹中运行:

rm -r typings
typings install
npm start

一切正常。

答案 5 :(得分:11)

你也可以在tsconfig.json文件中使用exclude选项,如下所示:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  },
  "exclude": [
    "node_modules"
  ]
}

答案 6 :(得分:4)

在我的情况下,我收到错误

  

node_modules/@types/es6-promise/index.d.ts(11,15):错误TS2300:重复标识符'Promise'。

我的package.json上有@types/es6-promise,但我的tsconfig已经在target: "es6"。所以我猜编译时与Promise存在冲突。

从我的@types/es6-promise文件中删除package.json解决了这个问题。

答案 7 :(得分:3)

使用 webpack 我遇到了同样的错误,以防你排除 tsconfig.json 中的.d.ts文件,而node_modules解决了我的问题:

"exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts",
    "typings/index.d.ts"
] 

答案 8 :(得分:1)

我遇到了这个问题,原因是磁盘上有一个意外的文件夹(jspm_packages,不再使用),这个文件夹没有被源代码控制跟踪(并且从我的IDE中隐藏)。这里有一个重复的TypeScript安装,导致了这些问题。

有点边缘情况,但在这里留下答案以防万一其他人正在寻找这个解决方案。

答案 9 :(得分:0)

我遇到了这个问题,事实证明我的项目中有一个第二个node_modules文件夹,它不应该在那里:-(

答案 10 :(得分:0)

在我将tsconfig.json更改为target后,我和其他人一起出现了这个错误:&#34; es2015&#34;和模块:&#34; es2015&#34;。

基础(AngularJS2快速入门)在main.ts文件中使用了/// <reference path="../../typings/index.d.ts" />。为了解决这个问题,我不得不删除该行。

答案 11 :(得分:0)

我们从网站文件夹中删除了一个lib文件夹。这是由以前的打字安装创建的。这变得重复了。当它被删除它工作!

答案 12 :(得分:0)

这可能是因为您的节点文件夹中同时存在输入和依赖关系。 因此,首先检查@types文件夹中的内容,如果有依赖项,请删除重复项。 对我来说这是core.js

答案 13 :(得分:0)

从package.json文件中删除此@ types / express-validator,然后运行npm install

Read More

作者留言: 此软件包已被弃用 这是express-validator(https://github.com/ctavan/express-validator)的存根类型定义。 express-validator提供自己的类型定义,因此您不需要安装@ types / express-validator!

答案 14 :(得分:0)

运行以下命令将解决此问题。

npm install @types/node --save-dev

答案 15 :(得分:0)

"typeRoots": ["node_modules/@types"], 添加到 tsconfig.json 文件中的“compilerOptions”对我有用。

答案 16 :(得分:-2)

我遇到了类似的问题。只需将我的tsconfig.json从项目的根目录移动到另一个范围就可以了。在我的项目中,我将tsconfig.json从根目录移至wwwroot。

答案 17 :(得分:-2)

完全关闭解决方案并重新运行项目解决了我的问题。