Después de instalar angular, el torreón compilador de imprenta conseguir algunos errores por no encontrar Promise
, Map
, Set
y Iterator
.
Hasta ahora los ignoré pero ahora necesito Promise
para que mi código pueda funcionar.
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
Los errores:
................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
fuente
fuente
Respuestas:
Angular 5 con mecanografiado ^ 2.0.0
Esto también debería funcionar igual con versiones anteriores de Angular 2+.
Para que esto funcione con typecript 2.0.0, hice lo siguiente.
npm install --save-dev @types/core-js
tsconfig.json
Más sobre @types con typecript 2.0.0.
Instalar Ejemplo:
Errores de identificador duplicado
Esto es muy probable porque ya se están importando duplicados ecmascript 6 tipings de otro lugar, probablemente un viejo es6-shim.
Verifique dos veces
typings.d.ts
para asegurarse de que no haya referenciases6
. Elimine cualquier referencia aes6
de su directorio de tipings si tiene uno.Por ejemplo:
Esto entrará en conflicto con
types:['core-js']
typings.json.La inclusión
core-js
en la matriz de tipostsconfig.json
debería ser el único lugar desde el que se importa.CLI angular 1.0.0-beta.30
Si está utilizando la CLI Angular, elimine la matriz lib
typings.json
. Esto parece entrar en conflicto con la declaración de core-js en tipos.Usuarios de Webstorm / Intellij que utilizan la CLI angular
Asegúrese de que el compilador de mecanografiado incorporado esté deshabilitado. Esto entrará en conflicto con la CLI. Para compilar su mecanografiado con la CLI, puede configurar una
ng serve
configuración.Tsconfig compilerOptions lib vs types
Si prefiere no instalar las definiciones de tipo core js, hay algunas bibliotecas es6 que vienen incluidas con typecript. Esos se utilizan a través de la
lib: []
propiedad en tsconfig.Consulte aquí, por ejemplo: https://www.typescriptlang.org/docs/handbook/compiler-options.html
tl; dr
Respuesta corta, ya sea
"lib": [ "es6", "dom" ]
o"types": ["core-js"]
se puede utilizar para resolvercan't find Promise,Map, Set and Iterator
. Sin embargo, usar ambos provocará errores de identificador duplicados.fuente
También tengo el mismo problema, "Promesa no encontrada", cuando el código quiere crear un objeto Promesa.
Intenté alguna solución encontrada en stackoverflow, incluida la que sacó System.config ({...}) para formar system.js y la incluyó en index.html.
Finalmente resolví el problema. El problema es que, en index.html, se incluye es6-shim.min.js. Sin embargo, en tsconfig.json, la propiedad "target" en "compilerOptions" tiene el valor de "es5". Después de cambiarlo a "es6", el error desapareció.
fuente
Angular 2 Final
- Soporte es5 (funciona perfectamente con TS 2.0.0 +)
Por actualización
es6-shim
no es compatible ahora, si tiene ambas tipificaciones instaladas juntases6-shim
ycore-js
juntas. Elimine laes6-shim
escritura mencionando en tsconfig.json. Ahora puede consultar a continuacióncore-js
escribiendo para obteneres5
ayuda dentromain.ts
tsconfig.json
- soporte es6
Solo necesita establecer la
"target"
propiedad enes6
, entonces todos los errores desaparecerán. Y el código transpilado estará enes6
formato.fuente
2.0.0-rc.1
. Solo comencé a usar Angular hace un par de días, trabajé a través de los documentos de inicio [aquí] (). En elpackage.json
que pusieron"angular2-in-memory-web-api": "0.0.7"
y el resto de las cosas angular viene de"@angular/<module>": "2.0.0-rc.1"
donde<module>
escommon
,compiler
,core
,http
,platform-browser
,platform-browser-dynamic
,router
,router-deprecated
yupgrade
.Actualizado a partir de angular-2.0.0-rc.4
TLDR;
Transpile a es6
Transpile a es5
Para los lectores:
Opción 1: Transpile a es6 o es2015
tsconfig.json:
Tenga en cuenta que uglifyjs no admite es6 en este momento . Esto podría afectarlo al hacer paquetes de producción.
Opción 2: Transpile a es5, instale tipings y luego instale es6-shim:
tsconfig.json:
Instale tipings, luego instale es6-shim:
Si sigue esta ruta, debe asegurarse de que el compilador mecanografiado pueda encontrar el archivo .d.ts.
Tienes dos opciones:
a. Asegúrese de que su tsconfig.json esté al mismo nivel que la carpeta de tipings.
si. Incluya una referencia en su archivo main.ts donde su aplicación angular2 esté arrancada.
Opción A: asegúrese de que su tsconfig.json esté al mismo nivel que la carpeta de tipings.
Nota: NO use el indicador de exclusión para excluir la carpeta de tipings.
Opción B: referencia en el archivo principal antes de bootstrap (no haga esto):
Como se muestra en otras respuestas, Angular ya no incluye este archivo
main.ts:
fuente
--saveDev
No funciona por ahora.--save-dev
hace.typings
debería instalarse globalmente?Al tener Typecript> = 2, la opción "lib" en tsconfig.json hará el trabajo. No hay necesidad de Typings. https://www.typescriptlang.org/docs/handbook/compiler-options.html
fuente
Esto es lo que funcionó para mí.
comprobar si existe un
typings.json
archivoInstalar paquetes de tipings a nivel mundial.
después de instalar tipings , ejecute
luego reinicie el servidor.
fuente
Tuve un problema similar en el que no estaba reconociendo el método Promise.resolve () . Cambié el valor "objetivo" de ES5 a ES6 en tsconfig.json . Eso resolvió el problema.
Espero que esto ayude.
fuente
Como Angular 2 pasó a RC 0, /angular2/typings/browser.d.ts ya no forma parte de la distribución Angular 2. El archivo se puede instalar por separado.
Desde aquí: https://github.com/angular/angular/issues/8513 hay algunas opciones. El que funcionó para mí fue:
fuente
Me las arreglé para solucionar este problema sin tener que agregar ninguna referencia de triple barra al archivo de arranque TS, cambiar a ES6 (que trae un montón de problemas, tal como dijo @DatBoi ) actualizar VS2015
NodeJS
y / oNPM
compilaciones integradas o instalartypings
globalmente.Esto es lo que hice en unos pocos pasos:
typings
en elpackage.json
archivo del proyecto .script
bloque en elpackage.json
archivo para ejecutar / actualizartypings
después de cada acción de NPM.typings.json
archivo en la carpeta raíz del proyecto que contiene una referencia acore-js
, que es uno de los mejores paquetes de shim / polyfill que existen en este momento para solucionar problemas de ES5 / ES6.Así es como
package.json
debería verse el archivo (solo líneas relevantes):Y aquí está el
typings.json
archivo:(
Jasmine
yNode
no son obligatorios, pero sugiero mantenerlos en caso de que lo necesite en el futuro).Esta solución funciona bien con Angular2 RC1 a RC4, que es lo que necesitaba, pero creo que también solucionará problemas similares con otros paquetes de biblioteca habilitados para ES6.
AFAIK, creo que esta es la forma más limpia posible de solucionarlo sin alterar la configuración predeterminada de VS2015.
Para obtener más información y un análisis detallado del problema, también sugiero leer esta publicación en mi blog.
fuente
Si usa Angular2 RC1 con tipings v1.0 + use el comando:
para instalar la definición core-js y luego hacer referencia a su índice global en su main.ts:
Si usa es6-shim o alguna otra biblioteca de shim, instale tipings para eso
Consulte https://github.com/typings/typings/issues/517
fuente
Noté que estos problemas aparecían después de actualizar de Angular 5 a Angular 6. Pude solucionar esto haciendo lo siguiente en VS2017:
tsconfig.json:
fuente
Tuve el mismo problema al crear un objeto de promesa dentro de mi clase. Al cambiar el nombre de destino a "es5" de "es6" resolvió mi problema.
fuente
Otra posible solución es reinstalar los tipos:
esto me funciona para
"angular2": "2.0.0-beta.15"
npm clean cache
npm install
npm install -g typings
typings
directorio del proyecto (Directorio donde están instalados los módulos de tipificación)typings install
npm run
fuente
Otra buena solución. Necesita crear un archivo typings.json en el directorio raíz del proyecto con contenido:
Luego instale el paquete de tipificación global o local, si no está instalado (lo instalo globalmente):
En el comando de ejecución del directorio raíz del proyecto:
Después de que el problema se resuelva. No es necesario cambiar el objetivo de tsconfig a es6 o es7. Su aplicación web no es compatible después de eso alguna versión antigua de los navegadores.
fuente
Si vino aquí porque ve estos errores en Visual Studio 2017, entonces tiene un problema diferente al anterior, si tiene éxito en la compilación. Esto se debe a que el servicio de idiomas no elige tu tsconfig.json.
https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html
Debe configurar la Acción de compilación de su tsconfig.json en "Contenido" (clic derecho -> Propiedades), luego VS lo recogerá.
fuente
Encontré que la referencia en boot.ts no era la ruta correcta. Actualizando esa ruta para
/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
resolver los errores de Promise.fuente
Estoy entrenando con un tutorial angular2 (héroe).
Después de instalar @ types / core-js comentado en estas respuestas, recibí el error "Identificador duplicado".
En mi caso, se resolvió eliminando la línea lib en tsconfig.json.
fuente
mi estructura de archivos es la siguiente:
pegue el siguiente en la parte superior de su app.ts y su problema resuelto
fuente
Recibí el mismo problema y pude encontrarlo en github https://github.com/angular/angular-cli/issues/1901 , que indica que era un problema
[email protected]
.Mecanografiar downgrade a
2.0.0
nivel global y local me ayudó a resolverlo.Globalmente:
Localmente: VAYA a la carpeta del proyecto que creó con ng new
También cambié la versión del mecanografiado dentro de package.json de
^2.0.0
a2.0.0
, pero no funcionó hasta que degradé la instalación del mecanografiado local.fuente