Непонятное сообщение об ошибке "Дубликат идентификатора"
Почему я получаю это и еще много ошибок такого рода? Я добавляю ссылку на репозиторий, а также фрагменты кода ключа ниже. Я думаю, что у меня есть базовое недопонимание того, как работает зависимость и цепочка включения.
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"
}
}
Мой цд.джон:
{
"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"
}
}
}
Мой цд.д.ц:
{
"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"
}
}
}
Ответы
Ответ 1
Это из-за сочетания двух вещей:
Если в файле tsconfig.json отсутствует свойство "files", компилятор по умолчанию включает все файлы в каталоге и подкаталогах. Если указано свойство "files", включаются только эти файлы.
Фикс
Либо перечислите files
или include
явно https://basarat.gitbooks.io/typescript/docs/project/files.html 🌹
Ответ 2
Обновление: Версия 1.0 из Типов изменила структуру вывода, и ниже ответ относится к версии до 1.0.
Если вы используете Typions и исключаете в tsconfig.json, вы можете столкнуться с проблемой повторяющихся типов и вам нужно что-то вроде следующего:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
Чтобы упростить интеграцию с TypeScript, создаются два файла - typings/main.d.ts и typings/browser.d.ts, которые ссылаются на все типовые данные, установленные в проекте, только один из которых может использоваться при время.
Итак, в зависимости от того, какую версию вам нужно, вы должны исключить (или включить) файлы "браузер" или "основной" тип, но не оба, так как это происходит из-за дубликатов.
Этот вопрос с типом обсуждает его больше.
Ответ 3
Если вы установили типизацию отдельно в папке с образцами
{
"exclude": [
"node_modules",
"typings"
]
}
Ответ 4
Проблема была решена просто:
- Удаление папки
node_modules
- Запуск
npm install
для получения всех пакетов с правильными версиями
В моем случае проблема возникла после изменения ветвей Git, где новая ветка использовала другой набор модулей node. В старой ветке использовался TypeScript v1.8, новый v2.0
Ответ 5
Я столкнулся с этой проблемой. Когда я запустил npm start
, я получил кучу дубликатов идентификационных ошибок.
РЕШЕНИЕ:
В корневой папке проекта выполните:
rm -r typings
typings install
npm start
и все работает нормально.
Ответ 6
Вы также можете использовать опцию exclude в файле tsconfig.json следующим образом:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
Ответ 7
В моем случае я получил ошибку как
node_modules/@types/es6-prom/index.d.ts(11,15): ошибка TS2300: дублирующий идентификатор "Promise".
И у меня был @types/es6-promise
на моем package.json, но мой tsconfig
уже был с target: "es6"
. Таким образом, я думаю, что был конфликт с Promise
при компиляции.
Удаление @types/es6-promise
из моего файла package.json
решило проблему.
Ответ 8
Используя webpack, я столкнулся с той же ошибкой, на всякий случай, исключая файл .d.ts
в tsconfig.json и node_modules, решил мою проблему:
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts",
"typings/index.d.ts"
]
Ответ 9
У меня возникла эта проблема, вызванная наличием неожиданной папки на диске (jspm_packages
, которая больше не используется), которая не отслеживалась с помощью элемента управления источником (и скрыта от моей IDE). Это вызвало дублирование установки TypeScript, что вызвало проблемы.
Бит кромки, но оставляя ответ здесь на всякий случай, если кто-то ищет это решение.
Ответ 10
У меня была эта проблема, и оказалось, что у меня была вторая node_modules папка в моем проекте, которая не должна была быть там:-(
Ответ 11
У меня была эта ошибка вместе с другими, после того как я изменил tsconfig.json на цель: "es2015" и модуль: "es2015".
База (ускоренная система AngularJS2) использовала /// <reference path="../../typings/index.d.ts" />
в файле main.ts. Чтобы решить эту проблему, мне пришлось удалить эту строку.
Ответ 12
мы удалили папку lib из папки веб-сайта. это было создано предыдущей установкой титров. это стало дублировать. Когда это было удалено, это сработало!
Ответ 13
Это может быть из-за наличия и ввода и зависимости в вашей папке node.
поэтому сначала проверьте, что у вас есть в вашей папке @types, и если у вас есть их в зависимостях, удалите дубликат.
для меня это было core.js
Ответ 14
удалите этот @types/express-validator из файла package.json, затем запустите npm install
Прочитайте больше
Сообщение автора: Этот пакет устарел. Это определение типов заглушек для экспресс-валидатора (https://github.com/ctavan/express-validator). Экспресс-валидатор предоставляет свои собственные определения типов, поэтому вам не нужно устанавливать @types/express-validator!
Ответ 15
Выполните следующую команду, чтобы исправить эту проблему.
npm install @types/node --save-dev
Ответ 16
У меня возникла аналогичная проблема. Простое перемещение моего tsconfig.json из корня моего проекта до другого уровня помогло. В моем проекте я переместил tsconfig.json с корня до wwwroot.