Après l' installation angulaire, le donjon du compilateur Tapuscrit obtenir des erreurs de ne pas trouver Promise
, Map
, Set
et Iterator
.
Jusqu'à présent, je les ai ignorés mais maintenant j'en ai besoin Promise
pour 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'.
javascript
angular
typescript
Stav Alfi
la source
la source
Réponses:
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.
Exemple d'installation:
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.ts
Assurez - vous qu'il n'y a pas de références àes6
. Supprimez toute référence àes6
de 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-js
dans le tableau des types detsconfig.json
doit ê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 serve
configuration.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
tl; dr
Réponse courte soit
"lib": [ "es6", "dom" ]
ou"types": ["core-js"]
peut être utilisée pour résoudrecan't find Promise,Map, Set and Iterator
. Cependant, l'utilisation des deux entraînera des erreurs d'identifiant en double.la source
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.
la source
Finale angulaire 2
- support es5 (fonctionne parfaitement avec TS 2.0.0 +)
Par mise à jour
es6-shim
n'est pas pris en charge maintenant, si vous avez les deux types installés ensemblees6-shim
etcore-js
ensemble. Supprimez laes6-shim
saisie en mentionnant dans tsconfig.json. Vous pouvez maintenant vous référer à lacore-js
saisie ci-dessous poures5
obtenir 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é sures6
, puis toutes les erreurs disparaîtront. Et le code transpilé sera aues6
format.la source
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 lepackage.json
ils 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"
où<module>
estcommon
,compiler
,core
,http
,platform-browser
,platform-browser-dynamic
,router
,router-deprecated
etupgrade
.Mis à jour à partir de angular-2.0.0-rc.4
TLDR;
Transpilez vers ES6
Transpilez vers ES5
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.
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" />
la source
--saveDev
ne fonctionne pas pour le moment.--save-dev
Est-ce que.typings
être installé globalement?Lorsque vous avez Typescript> = 2, l'option "lib" dans tsconfig.json fera le travail. Pas besoin de dactylographie. https://www.typescriptlang.org/docs/handbook/compiler-options.html
{ "compilerOptions": { "target": "es5", "lib": ["es2016", "dom"] //or es6 instead of es2016(es7) } }
la source
C'est ce qui a fonctionné pour moi.
vérifier s'il existe un
typings.json
fichier,Installez le package de typages globalement.
après avoir installé les typages , exécutez
puis redémarrez le serveur.
la source
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.
la source
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" />
la source
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
NodeJS
et / ouNPM
les versions groupées ou installertypings
globalement.Voici ce que j'ai fait en quelques étapes:
typings
dans lepackage.json
fichier du projet .script
bloc dans lepackage.json
fichier pour exécuter / mettretypings
à jour après chaque action NPM.typings.json
fichier 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.json
devrait 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.json
fichier:{ "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" } }
(
Jasmine
etNode
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.
la source
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
la source
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:
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": "./" } }
la source
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.
la source
Une autre solution possible consiste à réinstaller les typages:
cela fonctionne pour moi pour
"angular2": "2.0.0-beta.15"
npm clean cache
npm install
npm install -g typings
typings
répertoire du projet (Répertoire où les modules de typage sont installés)typings install
npm run
la source
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:
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.
la source
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.
la source
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.la source
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.
la source
ma structure de fichier est comme ci-dessous:
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" />
la source
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.0
fois 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.la source