web-dev-qa-db-fra.com

Message d'erreur "TypeScript dupliqué"

Pourquoi est-ce que je reçois ceci et beaucoup d'autres erreurs de ce genre? J'ajoute un lien au référentiel ainsi que des extraits de code de clé ci-dessous. Je pense avoir un malentendu fondamental sur le fonctionnement de la dépendance et du chaînage "include". 

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

Tous les codes peuvent être trouvés ici .

Mon tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": false,
        "outDir": "built/",
        "sourceMap": true,
        "target": "es5"
    }
}

Mon 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"
    }
  }
}

Mes 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"
    }
  }
}
186
pitosalas

C'est à cause de la combinaison de deux choses: 

Si aucune propriété "fichiers" n'est présente dans un fichier tsconfig.json, le compilateur utilise par défaut tous les fichiers du répertoire et des sous-répertoires correspondants. Lorsqu'une propriété "fichiers" est spécifiée, seuls ces fichiers sont inclus.

Réparer

Listez files ou include explicitement https://basarat.gitbooks.io/TypeScript/docs/project/files.html ????

100
basarat

Update: la version 1.0 de Typings a modifié la structure de sortie et la réponse ci-dessous concerne la version antérieure à 1.0.

Si vous utilisez Typings et exclure dans votre tsconfig.json, vous pouvez rencontrer le problème des types de doublons et avoir besoin de quelque chose comme:

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

Pour simplifier l'intégration à TypeScript, deux fichiers sont générés, typings/main.d.ts et typings/browser.d.ts, qui référencent tous les typages installés dans le projet, dont un seul peut être utilisé à la fois.

Ainsi, selon la version dont vous avez besoin, vous devez exclure (ou inclure) les fichiers de type "navigateur" ou "principal", mais pas les deux, car c’est de là que proviennent les doublons.

Cette question de typages en discute plus.

66
RationalDev

Si vous avez installé des saisies séparément sous le dossier des saisies

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

Je viens de rencontrer ce problème. Quand j'ai exécuté npm start, j'ai eu un tas d'erreurs d'identificateur en double. 

SOLUTION:

À partir du dossier racine du projet, exécutez: 

rm -r typings
typings install
npm start

et tout fonctionne bien.

15
user6217332

Le problème a été résolu simplement:

  1. Suppression du dossier node_modules 
  2. Lancer npm install pour obtenir tous les paquets avec les versions correctes

Dans mon cas, le problème est survenu après le changement de branches Git, lorsqu'une nouvelle branche utilisait un ensemble différent de modules de nœuds. L'ancienne branche utilisait TypeScript v1.8, la nouvelle v2.0

14
Alex Klaus

Vous pouvez également utiliser l'option d'exclusion dans le fichier tsconfig.json comme suit:

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

Dans mon cas j'ai eu l'erreur comme

node_modules/@types/es6-promise/index.d.ts (11,15): erreur TS2300: identificateur en double 'Promise'.

Et j'avais @types/es6-promise sur mon package.json mais ma tsconfig était déjà avec target: "es6". Donc, je suppose qu’il ya eu un conflit avec Promise lors de la compilation.

La suppression de @types/es6-promise de mon fichier package.json a résolu le problème.

4
Felipe Sabino

Utiliser webpack J'ai rencontré la même erreur, au cas où le fichier .d.ts de votre tsconfig.json et node_modules aurait été résolu:

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

J'avais ce problème causé par un dossier inattendu sur le disque (jspm_packages, qui n'est plus utilisé) et qui n'était pas suivi par le contrôle de source (et caché de mon IDE). Cela a eu une installation en double de TypeScript, ce qui a causé les problèmes.

C'est un peu le cas, mais on laisse ici une réponse au cas où quelqu'un d'autre chercherait cette solution.

1
elwyn

nous avons supprimé un dossier lib du dossier du site Web. cela a été créé par une précédente installation de dactylographie. cela est devenu un doublon. Quand cela a été enlevé cela a fonctionné! 

0
Blue Clouds

J'ai eu ce problème et il s'est avéré que j'avais dans mon projet un deuxième dossier node_modules qui n'était pas supposé être là :-( 

0
Bruno

Cela peut être dû au fait que vous avez entré à la fois dans votre dossier de nœuds la saisie et la dépendance .. donc, vérifiez d’abord ce que vous avez dans votre dossier @types et si vous les avez dans les dépendances, supprimez le doublon . Pour moi c’était fondamental. js

0
Mahdi Shahbazi

J'ai eu cette erreur, avec d'autres, après avoir modifié mon tsconfig.json en ciblant: "es2015" et le module: "es2015".

La base (AngularJS2 quickstart) utilisait /// <reference path="../../typings/index.d.ts" /> dans le fichier main.ts. Pour résoudre ce problème, je devais supprimer cette ligne.

0
Sako73

supprimez ce @ types/express-validator du fichier package.json, puis exécutez npm install

Lire la suite

Message d'auteur: Ce paquet est obsolète Il s'agit d'une définition de types de stub pour express-validator ( https://github.com/ctavan/express-validator ). express-validator fournit ses propres définitions de types, vous n'avez donc pas besoin d'installer @ types/express-validator! 

0
Chanaka