Förvirrande "duplicerat identifierare" Typescript-felmeddelande
Varför får jag detta och många fler fel av den här typen? Jag lägger till en länk till repot samt viktiga kodsnuttar nedan. Jag tror att jag har en grundläggande missuppfattning om hur beroendet och kedjning av "include" fungerar.
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 kod kan hittas här.
Min tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"outDir": "built/",
"sourceMap": true,
"target": "es5"
}
}
Min 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"
}
}
}
Min 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"
}
}
}
Svar #1
Detta beror på kombinationen av två saker:
tsconfighar ingenfiles-sektion. Från http://www.typescriptlang.org/docs/handbook/tsconfig-json.htmlOm ingen "files"-egenskap finns i en tsconfig.json, inkluderar kompilatorn som standard alla filer i den innehållande katalogen och underkatalogerna. När en "files"-egenskap anges inkluderas endast dessa filer.
Att inkludera
typescriptsom ett npm-beroende:node_modules/typescript/Detta betyder att helatypescriptinkluderas... det finns ändå en implicit inkluderadlib.d.tsi ditt projekt (http://basarat.gitbook.io/typescript/content/docs/types/lib.d.ts.html) och den konflikerar med den som levereras med NPM-versionen av typescript.
Fixa
Ange antingen files eller include uttryckligen https://basarat.gitbook.io/typescript/project/compilation-context/files 🌹
Svar #2
Uppdatering: Version 1.0 av Typings ändrade utdata-strukturen och nedanstående svar gäller versionen före 1.0.
Om du använder Typings och exclude i din tsconfig.json kan du stöta på problemet med duplicerade typer och behöver något liknande följande:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
För att förenkla integrationen med TypeScript genereras två filer - typings/main.d.ts och typings/browser.d.ts - som refererar till alla typings som installerats i projektet, men endast en av dem kan användas åt gången.
Så beroende på vilken version du behöver bör du utesluta (eller inkludera) filerna av typen "browser" eller "main", men inte båda, eftersom det är här dubbletterna kommer från.
Detta Typings-problem diskuterar det mer.
Svar #3
Problemet löstes enkelt genom att:
- Tar bort
node_modules-mappen - Kör
npm installför att få alla paket med rätt versioner
I mitt fall uppstod problemet efter att ha bytt Git-grenar, där en ny gren använde en annan uppsättning node-moduler. Den gamla grenen använde TypeScript v1.8, den nya v2.0
Svar #4
Om du har installerat typings separat i typings-mappen, lägg till detta i tsconfig.json:
{
"exclude": [
"node_modules",
"typings"
]
}
Svar #5
Du kan också använda exclude-alternativet i tsconfig.json-filen på följande sätt:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
Svar #6
Att aktivera skipLibCheck i tsconfig löste det för mig.
{
"compilerOptions": {
"skipLibCheck": true /* Skip type checking all .d.ts files. */
},
"exclude": ["node_modules"],
"include": ["./src/**/*.ts"]
}
Svar #7
Jag sprang precis in i det här problemet. När jag körde npm start fick jag en massa fel om dubbla identifierare.
LÖSNING:
Från projektets rotmapp kör:
rm -r typings
typings install
npm start
och allt fungerar bra.
