Сбивающее с толку сообщение об ошибке типа " дубликат идентификатора
Почему я получаю эту и многие другие ошибки такого рода? Я добавляю ссылку на РЕПО, а также фрагменты кода ключа ниже. Я думаю, что у меня есть основное непонимание того, как работает зависимость и "включение" цепочки.
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 ответов:
это из-за сочетания двух вещей:
tsconfig
не имея каких-либо . От http://www.typescriptlang.org/docs/handbook/tsconfig-json.htmlесли в 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 вопрос обсуждает его более.
Я просто столкнулся с этой проблемой. Когда я бежал
npm start
, Я получил кучу повторяющихся ошибок идентификатора.устранение:
из корневой папки проекта запустите:
rm -r typings typings install npm start
и все работает нормально.
проблема была решена просто:
- удалить
node_modules
папку- под управлением
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!