Warum bekomme ich diese und viele weitere Fehler dieser Art? Ich füge einen Link zum Repo sowie die folgenden Code-Ausschnitte hinzu. Ich glaube, ich habe ein grundlegendes Missverständnis darüber, wie die Abhängigkeit und "Einbeziehung" von Verkettung funktioniert.
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'.
Den gesamten Code finden Sie hier .
Meine tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"outDir": "built/",
"sourceMap": true,
"target": "es5"
}
}
Mein 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"
}
}
}
Meine 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"
}
}
}
Dies liegt an der Kombination zweier Dinge:
tsconfig
hat keine files
-Sektion. Von http://www.typescriptlang.org/docs/handbook/tsconfig-json.htmlWenn in einer Datei "tsconfig.json" keine Eigenschaft "files" vorhanden ist, enthält der Compiler standardmäßig alle Dateien im übergeordneten Verzeichnis und in den Unterverzeichnissen. Wenn eine "files" -Eigenschaft angegeben wird, werden nur diese Dateien eingeschlossen.
TypeScript
als eine npm-Abhängigkeit: node_modules/TypeScript/
Dies bedeutet, dass alle TypeScript
enthalten sind .... lib.d.ts
ist in Ihrem Projekt sowieso implizit enthalten ( http://basarat.gitbooks.io/TypeScript/content/docs/types /lib.d.ts.html ) und dessen Konflikt mit derjenigen, die mit der NPM-Version von TypeScript geliefert wird. Entweder Liste files
oder include
explizit https://basarat.gitbooks.io/TypeScript/docs/project/files.html ????
Update: Version 1.0 von Typings hat die Ausgabestruktur geändert und die Antwort unten bezieht sich auf die Version vor 1.0.
Wenn Sie Typings verwenden und in Ihrer Datei "tsconfig.json" ausschließen, können Sie auf das Problem doppelter Typen stoßen und Folgendes benötigen:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
Um die Integration mit TypeScript zu vereinfachen, werden zwei Dateien generiert - typings/main.d.ts und typings/browser.d.ts -, die auf alle im Projekt installierten Typierungen verweisen, von denen jeweils nur eine verwendet werden kann.
Abhängig davon, welche Version Sie benötigen, sollten Sie die Dateien vom Typ "browser" oder "main" ausschließen (oder einschließen), nicht jedoch beide, da hier die Duplikate stammen.
Diese Typings Ausgabe erörtert es mehr.
Wenn Sie die Typisierung separat im Ordner Ordner installiert haben
{
"exclude": [
"node_modules",
"typings"
]
}
Ich bin gerade auf dieses Problem gestoßen. Als ich npm start
lief, bekam ich eine Reihe doppelter Identifizierungsfehler.
LÖSUNG:
Führen Sie im Hauptordner des Projekts Folgendes aus:
rm -r typings
typings install
npm start
und alles funktioniert gut.
Problem wurde gelöst durch:
node_modules
-Ordner löschen npm install
ausführen, um alle Pakete mit korrekten Versionen abzurufenIn meinem Fall trat das Problem nach dem Ändern von Git-Zweigen auf, bei dem ein neuer Zweig einen anderen Satz Knotenmodule verwendete. Der alte Zweig verwendete TypeScript v1.8, der neue Zweig v2.0
Sie können auch die Option exclude in der Datei tsconfig.json wie folgt verwenden:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
In meinem Fall bekam ich den Fehler als
node_modules/@types/es6-promise/index.d.ts (11,15): Fehler TS2300: Doppelter Bezeichner 'Promise'.
Und ich hatte @types/es6-promise
auf meinem package.json, aber meine tsconfig
war bereits mit target: "es6"
. Ich denke, es gab einen Konflikt mit Promise
beim Kompilieren.
Durch das Entfernen von @types/es6-promise
aus meiner package.json
-Datei wurde das Problem behoben.
Bei Verwendung von webpack stieß ich auf denselben Fehler, nur für den Fall, dass das Ausschließen der .d.ts
-Datei in Ihrer tsconfig.json und node_modules mein Problem gelöst hat:
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts",
"typings/index.d.ts"
]
Dieses Problem wurde durch einen unerwarteten Ordner auf der Festplatte verursacht (jspm_packages
, der nicht mehr verwendet wird), der nicht von der Quellcodeverwaltung (und von meiner IDE verborgen) verfolgt wurde. Dies hatte eine doppelte Installation von TypeScript zur Folge, was zu den Problemen führte.
Etwas Edge-Fall, aber hier eine Antwort hinterlassen, nur falls jemand anderes nach dieser Lösung sucht.
wir haben einen lib-Ordner aus dem Website-Ordner entfernt. Dies wurde durch eine vorherige Installation von Typisierungen erstellt. das wurde doppelt. Wenn das entfernt wurde, hat es funktioniert!
Ich hatte dieses Problem und es stellte sich heraus, dass ich einen zweiten node_modules-Ordner in meinem Projekt hatte, der nicht dort sein sollte :-(
Dies kann darauf zurückzuführen sein, dass Sie sowohl in Ihrem Knotenordner als auch in Abhängigkeit voneinander sind. Sie müssen zuerst überprüfen, was Sie in Ihrem Ordner @types haben. Wenn Sie sie in Abhängigkeiten haben, entfernen Sie das Duplikat. js
Ich hatte diesen Fehler, zusammen mit anderen, nachdem ich meine tsconfig.json in target geändert habe: "es2015" und das Modul: "es2015".
Die Basis (AngularJS2-Schnellstart) verwendete /// <reference path="../../typings/index.d.ts" />
in der Datei main.ts. Um dieses Problem zu lösen, musste ich diese Zeile entfernen.
entfernen Sie diesen @ types/express-validator aus der package.json-Datei und führen Sie dann npm install aus
Author message: Dieses Paket ist veraltet Dies ist eine Definition der Stub-Typen für den Express-Validator ( https://github.com/ctavan/express-validator ). Der Express-Validator stellt seine eigenen Typdefinitionen zur Verfügung, sodass Sie @ Types/Express-Validator nicht installieren müssen!