Сбивающее с толку сообщение об ошибке типа " дубликат идентификатора


Почему я получаю эту и многие другие ошибки такого рода? Я добавляю ссылку на РЕПО, а также фрагменты кода ключа ниже. Я думаю, что у меня есть основное непонимание того, как работает зависимость и "включение" цепочки.

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'.

весь код можно найти здесь.

мой 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.д.ТС:

{
  "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"
    }
  }
}
15   176  

15 ответов:

это из-за сочетания двух вещей:

если в tsconfig нет свойства" files".JSON, компилятор по умолчанию включает все файлы в содержащий каталог и подкаталоги. Если указано свойство "files", то используются только эти файлы включенный.

  • в том числе typescript как зависимость npm:node_modules/typescript/ Это означает, что все typescript включается .... есть неявно включенный lib.d.ts в любом случае в вашем проекте (http://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html) и его конфликт с тем, который поставляется с версией npm typescript.

исправить

список files явно или есть что-то вроде atom-typescript генерирует этот ключ для вас : https://github.com/TypeStrong/atom-typescript/blob/master/docs/tsconfig.md#filesglob

обновление: версия 1.0 типизаций изменила структуру вывода, и приведенный ниже Ответ относится к версии pre 1.0.

Если вы используете Typings и exclude в своем tsconfig.json, вы можете столкнуться с проблемой повторяющихся типов и нужно что-то вроде следующего:

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

чтобы упростить интеграцию с TypeScript, два файла-typings / main.d.ts и typings/браузер.d. ts-генерируются ссылки на все типы, установленные в системе проект только один из которых может использоваться одновременно.

поэтому в зависимости от того, какая версия вам нужна, вы должны исключить (или включить) файлы типа "браузер" или "основной", но не оба, так как именно здесь появляются дубликаты.

этот Typings вопрос обсуждает его более.

Если вы установили typings отдельно в папке typings

{
  "exclude": [
    "node_modules",
    "typings"
  ]
}

Я просто столкнулся с этой проблемой. Когда я бежал npm start, Я получил кучу повторяющихся ошибок идентификатора.

устранение:

из корневой папки проекта запустите:

rm -r typings
typings install
npm start

и все работает нормально.

проблема была решена просто:

  1. удалить node_modules папку
  2. под управлением npm install чтобы получить все пакеты с правильными версиями

в моем случае проблема возникла после изменения ветвей Git, где новая ветвь использовала другой набор модулей узлов. Старая ветка использовала TypeScript v1.8, новая v2. 0

вы также можете использовать опцию exclude в tsconfig.json файл вот так:

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

в моем случае я получил ошибку как

node_modules / @types/es6-promise / index.d.ts(11,15): ошибка TS2300: дубликат идентификатора 'Promise'.

а у меня было @types/es6-promise на мой пакет.JSON, но мой tsconfig уже с target: "es6". Так что я предполагаю, что был конфликт с Promise при компиляции.

удаление @types/es6-promise от меня package.json файл решил проблему.

используя webpack я наткнулся на ту же ошибку, на всякий случай исключая в своем tsconfig.json и node_modules решили мою проблему:

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

У меня была эта проблема, вызванная наличием неожиданной папки на диске (jspm_packages, больше не используется), который не отслеживался системой управления версиями (и скрыт от моей IDE). В нем была дублированная установка TypeScript, что вызвало проблемы.

немного крайний случай, но оставляя ответ здесь на всякий случай, если кто-то еще охотится за этим решением.

У меня была эта проблема, и оказалось, что у меня была вторая папка node_modules в моем проекте, которая не должна была быть там : - (

У меня была эта ошибка, вместе с другими, после того, как я изменил мою tsconfig.json к цели:" es2015", и модуль:"es2015".

база (angularjs2 quickstart) используется /// <reference path="../../typings/index.d.ts" /> в главном.файл ТС. Чтобы решить эту проблему, мне пришлось удалить эту строку.

мы удалили папку lib из папки веб-сайта. это было создано предыдущей установкой типизаций. это стало дубликатом. Когда это было удалено, это сработало!

Это может быть из-за того, что в вашей папке узла есть как типизация, так и зависимость. поэтому сначала проверьте, что у вас есть в папке @types, и если у вас есть зависимости, удалите дубликат. для меня это был стержень.js

удалите этот @types / express-validator из пакета.JSON-файл, затем запустите npm install

Подробнее

Автор Сообщение: Этот пакет был устаревшим Это определение типов заглушек для экспресс-валидатора (https://github.com/ctavan/express-validator). express-validator предоставляет свои собственные определения типов, поэтому вам не нужно устанавливать @types/express-validator!

Я столкнулся с подобной проблемой. Просто переместите мой tsconfig.JSON от корня моего проекта в другой области помог. В моем проекте я переместил tsconfig.json от корня до wwwroot.