Angulaire: impossible de trouver la promesse, la carte, l'ensemble et l'itérateur

177

Après l' installation angulaire, le donjon du compilateur Tapuscrit obtenir des erreurs de ne pas trouver Promise, Map, Setet Iterator.

Jusqu'à présent, je les ai ignorés mais maintenant j'en ai besoin Promisepour que mon code puisse fonctionner.

import {Component} from 'angular2/core';
@Component({
    selector: 'greeting-cmp',
    template: `<div>{{ asyncGreeting | async}}</div>`
})
export class GreetingCmp {
    asyncGreeting: Promise<string> = new Promise(resolve => {
// after 1 second, the promise will resolve
        window.setTimeout(() => resolve('hello'), 1000);
    });
}

Additional information:
npm -v is 2.14.12
node -v is v4.3.1
typescript v is 1.6

Les erreurs:

................ERROS OF MY CODE.................
    C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
    Error:(7, 20) TS2304: Cannot find name 'Promise'.
    Error:(7, 42) TS2304: Cannot find name 'Promise'.
    .........................................
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
    Error:(77, 90) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
    Error:(83, 60) TS2304: Cannot find name 'Promise'.
    Error:(83, 146) TS2304: Cannot find name 'Promise'.
    Error:(96, 51) TS2304: Cannot find name 'Promise'.
    Error:(96, 147) TS2304: Cannot find name 'Promise'.
    Error:(133, 90) TS2304: Cannot find name 'Promise'.
    Error:(171, 81) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
    Error:(3, 14) TS2304: Cannot find name 'Map'.
    Error:(4, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
    Error:(14, 13) TS2304: Cannot find name 'Map'.
    Error:(24, 17) TS2304: Cannot find name 'Map'.
    Error:(25, 17) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
    Error:(436, 103) TS2304: Cannot find name 'Map'.
    Error:(436, 135) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
    Error:(12, 50) TS2304: Cannot find name 'Promise'.
    Error:(16, 41) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
    Error:(108, 136) TS2304: Cannot find name 'Promise'.
    Error:(156, 150) TS2304: Cannot find name 'Promise'.
    Error:(197, 128) TS2304: Cannot find name 'Promise'.
    Error:(203, 127) TS2304: Cannot find name 'Promise'.
    Error:(204, 141) TS2304: Cannot find name 'Promise'.
    Error:(205, 119) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
    Error:(13, 13) TS2304: Cannot find name 'Map'.
    Error:(14, 84) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
    Error:(27, 33) TS2304: Cannot find name 'Promise'.
    Error:(28, 45) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
    Error:(1, 25) TS2304: Cannot find name 'MapConstructor'.
    Error:(2, 25) TS2304: Cannot find name 'SetConstructor'.
    Error:(4, 27) TS2304: Cannot find name 'Map'.
    Error:(4, 39) TS2304: Cannot find name 'Map'.
    Error:(7, 9) TS2304: Cannot find name 'Map'.
    Error:(8, 30) TS2304: Cannot find name 'Map'.
    Error:(11, 43) TS2304: Cannot find name 'Map'.
    Error:(12, 27) TS2304: Cannot find name 'Map'.
    Error:(14, 23) TS2304: Cannot find name 'Map'.
    Error:(15, 25) TS2304: Cannot find name 'Map'.
    Error:(95, 41) TS2304: Cannot find name 'Set'.
    Error:(96, 22) TS2304: Cannot find name 'Set'.
    Error:(97, 25) TS2304: Cannot find name 'Set'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
    Error:(13, 17) TS2304: Cannot find name 'Map'.
    Error:(14, 17) TS2304: Cannot find name 'Set'.
    Error:(78, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
    Error:(2, 14) TS2304: Cannot find name 'Promise'.
    Error:(7, 32) TS2304: Cannot find name 'Promise'.
    Error:(8, 38) TS2304: Cannot find name 'Promise'.
    Error:(9, 35) TS2304: Cannot find name 'Promise'.
    Error:(9, 93) TS2304: Cannot find name 'Promise'.
    Error:(10, 34) TS2304: Cannot find name 'Promise'.
    Error:(11, 32) TS2304: Cannot find name 'Promise'.
    Error:(11, 149) TS2304: Cannot find name 'Promise'.
    Error:(12, 43) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
    Error:(43, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
    Error:(11, 16) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
    Error:(75, 33) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
    Error:(85, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
    Error:(35, 67) TS2304: Cannot find name 'Promise'.
    Error:(50, 66) TS2304: Cannot find name 'Promise'.
    Error:(89, 67) TS2304: Cannot find name 'Promise'.
    Error:(94, 38) TS2304: Cannot find name 'Promise'.
    Error:(94, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
    Error:(46, 62) TS2304: Cannot find name 'Promise'.
    Error:(47, 42) TS2304: Cannot find name 'Iterator'.
    Error:(103, 74) TS2304: Cannot find name 'Promise'.
    Error:(103, 84) TS2304: Cannot find name 'Promise'.
    Error:(143, 66) TS2304: Cannot find name 'Promise'.
    Error:(158, 65) TS2304: Cannot find name 'Promise'.
    Error:(201, 66) TS2304: Cannot find name 'Promise'.
    Error:(206, 38) TS2304: Cannot find name 'Promise'.
    Error:(206, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
    Error:(6, 50) TS2304: Cannot find name 'Promise'.
    Error:(7, 58) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
    Error:(7, 38) TS2304: Cannot find name 'Promise'.
    Error:(7, 51) TS2304: Cannot find name 'Iterator'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiseObservable.d.ts
    Error:(9, 31) TS2304: Cannot find name 'Promise'.
    Error:(10, 26) TS2304: Cannot find name 'Promise'.
Stav Alfi
la source
1
Installez la dernière version de TypeScript pour Visual Studio 2015 .
mylesk

Réponses:

177

Angulaire 5 avec Typescript ^ 2.0.0

Cela devrait également fonctionner de la même manière avec les versions antérieures d'Angular 2+.

Pour que cela fonctionne avec dactylographié 2.0.0, j'ai fait ce qui suit.

npm install --save-dev @types/core-js

tsconfig.json

 "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ],
    "types": [
      "core-js"
    ]
  }

En savoir plus sur @types avec typescript 2.0.0.

  1. https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
  2. https://www.npmjs.com/~types

Exemple d'installation:

npm install --save-dev @types/core-js

Erreurs d'identifiant en double

Ceci est probablement dû au fait que des typages ecmascript 6 dupliqués sont déjà importés d'un autre endroit, probablement un ancien es6-shim.

Revérifiez typings.d.tsAssurez - vous qu'il n'y a pas de références à es6. Supprimez toute référence à es6de votre répertoire de typages si vous en avez une.

Par exemple:

Cela sera en conflit avec types:['core-js']dans typings.json.

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332" 
    // es6-shim will also conflict
  }
}

L'inclusion core-jsdans le tableau des types de tsconfig.jsondoit être le seul endroit d'où elle est importée.

CLI angulaire 1.0.0-beta.30

Si vous utilisez Angular-CLI, supprimez le tableau lib dans typings.json. Cela semble entrer en conflit avec la déclaration de core-js dans les types.

"compilerOptions" : {
  ...
  // removed "lib": ["es6", dom"],
  ...
},
"types" : ["core-js"]

Utilisateurs Webstorm / Intellij utilisant la CLI angulaire

Assurez-vous que le compilateur dactylographié intégré est désactivé. Cela sera en conflit avec la CLI. Pour compiler votre dactylographie avec la CLI, vous pouvez configurer une ng serveconfiguration.

entrez la description de l'image ici

Compilateur TsconfigOptions lib vs types

Si vous préférez ne pas installer les définitions de type core js, certaines bibliothèques es6 sont fournies avec typescript. Ceux-ci sont utilisés via la lib: []propriété dans tsconfig.

Voir ici par exemple: https://www.typescriptlang.org/docs/handbook/compiler-options.html

Remarque: Si --lib n'est pas spécifié, une bibliothèque par défaut est injectée. La bibliothèque par défaut injectée est: ► Pour --target ES5: DOM, ES5, ScriptHost ► Pour --target ES6: DOM, ES6, DOM.Iterable, ScriptHost

tl; dr

Réponse courte soit "lib": [ "es6", "dom" ]ou "types": ["core-js"]peut être utilisée pour résoudre can't find Promise,Map, Set and Iterator. Cependant, l'utilisation des deux entraînera des erreurs d'identifiant en double.

Kris Hollenbeck
la source
1
Merci pour la mise à jour et la bonne réponse. J'ai accepté votre réponse car les gens qui viennent encore ici pour obtenir cette erreur disparaissent jusqu'à maintenant. Y a-t-il une chance que vous mettiez à jour votre réponse à RC 5? Je suis confronté à cette erreur et en suivant votre réponse, j'ai pu utiliser la promesse mais maintenant il y a beaucoup d'erreurs du fichier node_modules \ @types \ es6-shim \ index.d.ts: "Duplicate identifier 'PropertyKey'." dans les lignes: 6,10,248,283,290 et ainsi de suite; .. également une erreur dans: C: \ Users \ armyTik \ Desktop \ rc5 \ store-app-02 \ node_modules \ typescript \ lib \ lib.es2015.core.d.ts: 17 : 13 Identifiant 'PropertyKey' en double.
Stav Alfi
J'ai mis à jour ma réponse. J'espère que cela aidera à clarifier un peu les choses. Cela devrait être le même pour RC5 et RC4 je crois.
Kris Hollenbeck
Je l'ai également changé pour ne refléter que les core-js, donc il est, espérons-le, moins déroutant. core-js et es6 sont tous deux destinés aux déclarations de type spécifiques à es6. Je préfère core-js car il semble couvrir plus que le es6-shim.
Kris Hollenbeck
Merci pour la mise à jour. Je n'ai pas eu de chance cette fois. J'ai mis à jour mes erreurs actuelles.
Stav Alfi
2
Probablement, lib est la meilleure solution. github.com/angular/angular/blob/…
Alex
75

J'ai aussi le même problème - "Promise not found" - lorsque le code veut créer un objet Promise.

J'ai essayé une solution trouvée sur stackoverflow, y compris celle pour retirer System.config ({...}) pour former system.js et l'inclure dans index.html.

Enfin j'ai résolu le problème. Le problème est que, dans index.html, es6-shim.min.js est inclus. Cependant, dans tsconfig.json, la propriété "target" sous "compilerOptions" a la valeur "es5". Après l'avoir changé en "es6", l'erreur a disparu.

Daniel C. Deng
la source
2
C'était aussi le problème pour moi. Est-ce que quelqu'un sait pourquoi cela causerait cette erreur?
Nick Brady
Correction également des erreurs que j'ai reçues dans IntelliJ IDEA / WebStorm
bentolor
5
Mais le code js doit être transpilé en es5 car tous les navigateurs ne sont pas prêts pour es6. Quelqu'un a-t-il eu des problèmes avec ES6 dans différents navigateurs. Merci!
bmnepali
fonctionne pour moi sur angular2.1.0. compilateur 2.1.0 core 2.1.0 common2.1.0 rxjs5.0.0-beta.12 platform-browser2.1.0
farhad goodarzi
Merci! Vous m'avez sauvé beaucoup de temps
Cristian Traìna
63

Finale angulaire 2

- support es5 (fonctionne parfaitement avec TS 2.0.0 +)

Par mise à jour es6-shimn'est pas pris en charge maintenant, si vous avez les deux types installés ensemble es6-shimet core-jsensemble. Supprimez la es6-shimsaisie en mentionnant dans tsconfig.json. Vous pouvez maintenant vous référer à la core-jssaisie ci-dessous pour es5obtenir de l' aidemain.ts

///<reference path="./../typings/globals/core-js/index.d.ts"/>

tsconfig.json

exclude: [
   "node_modules", //<-- this would be needed in case of VS2015
   "node_modules/@typings",
   "typings"
]

- support es6

Il vous suffit de définir la "target"propriété sur es6, puis toutes les erreurs disparaîtront. Et le code transpilé sera au es6format.

Pankaj Parkar
la source
Merci beaucoup. Je n'ai eu aucune chance de trouver cela par moi-même.
Stav Alfi
@StavAlfi np .. cela arrive .. Heureux de vous aider .. Merci :)
Pankaj Parkar
Avec beta.7, il devrait être installé si vous utilisez la configuration de projet dans le didacticiel de démarrage rapide. Quelle version bêta d'Angular utilisez-vous? Je confirme le changement de rupture avec angular 2.0.0 beta.7
Marc
1
Le package.json du didacticiel de démarrage rapide prend en charge la version actuelle d'angular 2. Si vous copiez package.json. tscconfig.json et typings.json dans le répertoire racine de votre projet et appelez npm -install project setup sera très bien.
Marc
3
@PankajParkar 2.0.0-rc.1. J'ai commencé à utiliser Angular il y a seulement quelques jours, j'ai travaillé sur la documentation de démarrage [ici] (). Dans le package.jsonils ont mis "angular2-in-memory-web-api": "0.0.7"et le reste de l'étoffe angulaire vient d' "@angular/<module>": "2.0.0-rc.1"<module>est common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecatedet upgrade.
Hector
42

Mis à jour à partir de angular-2.0.0-rc.4

TLDR;

  1. Transpilez vers ES6

    • l'erreur disparaît (avec quelques pièges).
  2. Transpilez vers ES5

    • installer des typages
    • installer la cale es6
    • assurez-vous qu'il se compile avec votre code.
    • l'erreur s'en va.

Pour les lecteurs:

Option 1: Transpiler vers es6 ou es2015

tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
"exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Gardez à l'esprit que uglifyjs ne prend pas en charge es6 pour le moment . Cela pourrait vous empêcher de créer des lots de production.

Option 2: Transpilez vers es5, installez les typages, puis installez es6-shim:

tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
  "exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Installez les typages, puis installez es6-shim:

npm install typings --saveDev
typings install dt~es6-shim --global --save

Si vous suivez cette voie, vous devez vous assurer que le compilateur dactylographié peut trouver le fichier .d.ts.

Vous avez deux options:

une. Assurez-vous que votre tsconfig.json est au même niveau que le dossier typings.

b. Incluez une référence dans votre fichier main.ts où votre application angular2 est amorcée.

Option A: assurez-vous que votre tsconfig.json est au même niveau que le dossier typings.

Remarque: N'utilisez PAS l'indicateur d'exclusion pour exclure le dossier de typages.

project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json

Option B: Référence dans le fichier principal avant le bootstrap (ne faites pas cela):

Comme indiqué dans d'autres réponses, ce fichier n'est plus inclus par Angular

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />
Nick Acosta
la source
2
L'option 1 fonctionne parfaitement bien pour RC4. Assurez-vous de supprimer core-js et autres typages qui fournissent Promise, Map, etc. pour éviter les conflits d'espace de noms.
wtfzn
1
MERCI, 1 a travaillé. Besoin de core-js ou es6-shim (pas les deux). Et puis incluez ./typings/index.d.ts dans votre processus de compilation ts.
k3a du
1
--saveDevne fonctionne pas pour le moment. --save-devEst-ce que.
George Sovetov
1
Ne devrait pas typingsêtre installé globalement?
George Sovetov
8

C'est ce qui a fonctionné pour moi.

vérifier s'il existe un typings.jsonfichier,

Cela ressemble à quelque chose comme ça,

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160317120654",
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
    "node": "registry:dt/node#6.0.0+20160613154055"
  }
}

Installez le package de typages globalement.

sudo npm install -g typings

après avoir installé les typages , exécutez

typings install

puis redémarrez le serveur.

Tout est Vаиітy
la source
6

J'ai eu un problème similaire où il ne reconnaissait pas la méthode Promise.resolve () . J'ai changé la valeur "cible" de ES5 à ES6 dans tsconfig.json . Cela a résolu le problème.

J'espère que cela t'aides.

Nandakumar Purohit
la source
Oui, cela m'a aidé à coup sûr - a changé la valeur "cible" de ES5 à ES6 dans tsconfig.json.
Greg Trevellick
5

Depuis Angular 2 est passé à RC 0, /angular2/typings/browser.d.ts ne fait plus partie de la distribution Angular 2. Le fichier peut être installé séparément.

De là: https://github.com/angular/angular/issues/8513, il y a quelques options. Celui qui a fonctionné pour moi était:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />
James
la source
1
Merci pour cela, mais la commande pour les typages 1.0+ est: typings install dt ~ es6-shim --save --global ( github.com/typings/typings/issues/517 ) puis utilisez /// <reference path = " typings / es6-shim / es6-shim.d.ts "/>
Simon Trewhella
4

J'ai réussi à résoudre ce problème sans avoir à ajouter de référence triple barre oblique au fichier d'amorçage TS, à passer à ES6 (ce qui apporte un tas de problèmes, comme @DatBoi l'a dit) mettre à jour VS2015 NodeJSet / ou NPMles versions groupées ou installertypings globalement.

Voici ce que j'ai fait en quelques étapes:

  • ajouté typingsdans le package.jsonfichier du projet .
  • a ajouté un scriptbloc dans le package.jsonfichier pour exécuter / mettre typingsà jour après chaque action NPM.
  • a ajouté un typings.jsonfichier dans le dossier racine du projet contenant une référence à core-js, qui est l'un des meilleurs packages shim / polyfill pour le moment pour résoudre les problèmes ES5 / ES6.

Voici à quoi package.jsondevrait ressembler le fichier (lignes pertinentes uniquement):

{
  "version": "1.0.0",
  "name": "YourProject",
  "private": true,
  "dependencies": {
    ...
    "typings": "^1.3.2",
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
      "postinstall": "typings install"
  }
}

Et voici le typings.jsonfichier:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

( JasmineetNode ne sont pas obligatoires, mais je suggère de les conserver au cas où vous en auriez besoin à l'avenir).

Ce correctif fonctionne bien avec Angular2 RC1 à RC4, ce dont j'avais besoin, mais je pense qu'il résoudra également des problèmes similaires avec d'autres packages de bibliothèques compatibles ES6.

AFAIK, je pense que c'est le moyen le plus propre possible de le réparer sans gâcher les paramètres par défaut de VS2015.

Pour plus d'informations et une analyse détaillée du problème, je vous suggère également de lire cet article sur mon blog.

Darkseal
la source
3

Si vous utilisez Angular2 RC1 avec des typages v1.0 +, utilisez la commande:

typings install dt~core-js --save --global

pour installer la définition core-js puis référencer votre index global dans votre main.ts:

/// <reference path="../../../typings/index.d.ts" />

Si vous utilisez es6-shim ou une autre bibliothèque shim, installez plutôt des typages pour cela

Reportez-vous à https://github.com/typings/typings/issues/517

Simon Trewhella
la source
2

J'ai remarqué que ces problèmes se présentaient après la mise à niveau d'Angular 5 vers Angular 6. J'ai pu résoudre ce problème en procédant comme suit dans VS2017:

  • Assurez-vous que le SDK TypeScript a été installé (via le programme d'installation de Visual Studio) pour ma version particulière de TypeScript, 2.9
  • Assurez-vous que la propriété de projet Module System est définie pour correspondre à celle de mon tsconfig.json: ES2015. Ceci est souvent automatiquement synchronisé si le fichier tsconfig est à la racine du projet. Cependant, comme j'utilisais le modèle VS Angular, il place ces fichiers dans un sous-dossier "ClientApp" et la propriété de projet Module System n'a pas été définie.

Propriétés du projet VS2017

tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "lib": [
      "es2017",
      "dom"
    ],
    "module": "es2015",
    "baseUrl": "./"
  }
}
dasch88
la source
1

J'ai eu le même problème lors de la création d'un objet de promesse dans ma classe. En changeant le nom de la cible en "es5" de "es6", j'ai résolu mon problème.

CharithW
la source
1

Une autre solution possible consiste à réinstaller les typages:
cela fonctionne pour moi pour"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. Supprimer le typingsrépertoire du projet (Répertoire où les modules de typage sont installés)
  5. typings install
  6. npm run
Vicky Gonsalves
la source
1

Une autre bonne solution. Vous devez créer un fichier typings.json dans le répertoire racine du projet avec le contenu:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

Ensuite, installez le package de typages global ou local, s'il n'est pas installé (je l'installe globalement):

sudo npm install --global typings

Dans le répertoire racine du projet, exécutez la commande:

typings install

Une fois ce problème résolu. Pas nécessaire pour changer la cible tsconfig en es6 ou es7. Votre application Web ne prend plus en charge après cela certaines anciennes versions de navigateurs.

Alexey Nikitenko
la source
1

Si vous êtes venu ici parce que vous voyez ces erreurs dans Visual Studio 2017, vous rencontrez un problème différent de celui ci-dessus, si vous réussissez à compiler. C'est parce que le service de langue ne sélectionne pas votre tsconfig.json.

https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html

Vous devez définir l'action de construction de votre tsconfig.json sur "Contenu" (clic droit -> Propriétés), puis VS le récupérera.

Pieter Van Winckel
la source
0

J'ai trouvé que la référence dans boot.ts n'était pas le bon chemin. Mise à jour de ce chemin pour /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />résoudre les erreurs de promesse.

génial
la source
0

Je m'entraîne avec un tutoriel angular2 (héros).
Après avoir installé @ types / core-js commentés dans ces réponses, j'ai eu une erreur "Duplicate identifier".
Dans mon cas, cela a été résolu en supprimant la ligne lib dans tsconfig.json.

// "lib": ["es2015", "dom"]

coffeenjava
la source
-1

ma structure de fichier est comme ci-dessous:

project
 |--node-modules
 |   |--angular2
 |   |   |--typings
 |   |   |   |--browser.d.ts
 |--src
 |--app.ts

collez le ci-dessous en haut de votre app.ts et votre problème est résolu

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
Matey Aryeh
la source
Changer l'entrée TARGET pour qu'elle pointe vers ES6 dans le tsconfig.json a résolu ce problème pour moi, comme indiqué dans certaines des réponses ci-dessus.
TheCopyPaster
-1

J'ai eu le même problème et j'ai pu le trouver dans github https://github.com/angular/angular-cli/issues/1901 , qui indique que c'était un problème avec [email protected].

Rétrograder le typographie à la 2.0.0fois globalement et localement m'a aidé à le résoudre.

Globalement:

npm uninstall typescript -g
npm cache clean
npm install typescript@2.0.0 -g

Localement: allez dans le dossier du projet que vous avez créé par ng new

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

J'ai également changé la version de typescript dans package.json de ^2.0.0à 2.0.0, mais cela n'a pas fonctionné jusqu'à ce que je rétrograde l'installation locale de typescript.

voiture d'eau
la source
Pourquoi les gens votent-ils contre cela? J'aimerais savoir pourquoi c'est une mauvaise idée. Si dactylographié est un langage transpilé et est converti en javascript, il est aussi sécurisé que votre navigateur, donc ce n'est pas comme s'il y avait un risque, non?
user3505901