javascript - route - set page title in angular 6




Angular: Não é possível encontrar Promessa, Mapa, Conjunto e Iterador (13)

Atualizado a partir do angular-2.0.0-rc.4

TLDR;

  1. Transpile para es6

    • erro vai embora (w / some gotchas).
  2. Transpile para es5

    • instalar tipings
    • instale o calço es6
    • verifique se ele é compilado com seu código.
    • erro vai embora.

Para os leitores:

Opção 1: Transpile para es6 ou es2015

tsconfig.json:

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

Tenha em mente que o uglifyjs não suporta es6 no momento . Isso pode afetar você fazendo pacotes de produção.

Opção 2: Transpile para es5, instale typings e instale o es6-shim:

tsconfig.json:

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

Instale os typings e instale o es6-shim:

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

Se você seguir este caminho, você precisa ter certeza de que o compilador typescript pode encontrar o arquivo .d.ts.

Você tem duas opções:

uma. Certifique-se de que seu tsconfig.json esteja no mesmo nível da pasta de tipings.

b. Inclua uma referência em seu arquivo main.ts onde seu aplicativo angular2 é inicializado.

Opção A: Certifique-se de que seu tsconfig.json esteja no mesmo nível da pasta de tipings.

Nota: NÃO use o sinalizador de exclusão para excluir a pasta de tipings.

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

Opção B: Referência no arquivo principal antes do bootstrap (não faça isso):

Como mostrado em outras respostas, este arquivo não é mais incluído pelo Angular

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />

Depois de instalar o Angular, o compilador do Typescript continua recebendo alguns erros sobre não encontrar Promise , Map , Set e Iterator .

Até agora eu os ignorei, mas agora preciso de Promise para que meu código funcione.

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

Os erros:

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

Angular 2 Final

- suporte a es5 (funciona perfeitamente com o TS 2.0.0 +)

Por atualização es6-shim não é suportado agora, se você tiver ambos os tipos instalados juntos es6-shim e core-js juntos. Remova es6-shim digitando, mencionando em tsconfig.json. Agora você pode se referir abaixo do core-js digitando para suporte main.ts dentro do main.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"
]

- es6 suppport

Você só precisa definir a propriedade "target" para es6 , então todos os erros desaparecerão. E o código transpilado estará no formato es6 .



Como o Angular 2 foi para RC 0, /angular2/typings/browser.d.ts não faz mais parte da distribuição Angular 2. O arquivo pode ser instalado separadamente.

A partir daqui: https://github.com/angular/angular/issues/8513 existem algumas opções. O que funcionou para mim foi:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />

Eu encontrei a referência em boot.ts não era o caminho correto. A atualização desse caminho para /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" /> resolveu os erros do Promise.


Eu estou treinando com um tutorial angular2 (herói).
Depois de instalar @ types / core-js comentada nessas respostas, recebi um erro "Duplicate identifier".
No meu caso, foi resolvido como removendo a linha lib em tsconfig.json.

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


Eu também tenho o mesmo problema - "Promessa não encontrada" - quando o código deseja criar um objeto Promise.

Tentei alguma solução encontrada no , incluindo a que remove o System.config ({...}) para formar o system.js e incluí-lo no index.html.

Finalmente resolvi o problema. A questão é que, no index.html, o es6-shim.min.js está incluído. No entanto, em tsconfig.json, a propriedade "target" em "compilerOptions" tem o valor de "es5". Depois que eu mudei para "es6", o erro desapareceu.


Eu tive o mesmo problema ao criar um objeto de promessa dentro da minha classe. Ao alterar o nome do alvo para "es5" de "es6", resolvi meu problema.


Isto é o que funcionou para mim.

verifique se existe um arquivo typings.json ,

Parece algo assim,

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

Instale o pacote de tipings globalmente.

sudo npm install -g typings

depois de instalar tipings , execute

typings install

em seguida, reinicie o servidor.


Notei que esses problemas apareciam após a atualização do Angular 5 para o Angular 6. Consegui consertar isso fazendo o seguinte no VS2017:

  • Verifique se o SDK do TypeScript foi instalado (por meio do Instalador do Visual Studio) para a minha versão específica do TypeScript, 2.9
  • Assegure-se de que a propriedade do projeto Module System esteja configurada para corresponder a isso em my tsconfig.json: ES2015. Isso geralmente é sincronizado automaticamente se o arquivo tsconfig estiver na raiz do projeto. No entanto, desde que eu estava usando o modelo VS Angular, ele coloca esses arquivos em uma subpasta "ClientApp" e a propriedade de projeto do sistema de módulos não foi definida.

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": "./"
  }
}

Outra solução possível é reinstalar as tipificações:
Isso funciona para mim para "angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. Apagar o diretório de tipings do projeto (Diretório onde os módulos de tipings estão instalados)
  5. typings install
  6. npm run

Se estiver usando Angular2 RC1 com typings v1.0 + use o comando:

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

para instalar a definição do core-js e, em seguida, referencie seu índice global em seu main.ts:

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

Se estiver usando es6-shim ou alguma outra biblioteca de shims, instale os typings para isso

Consulte github.com/typings/typings/issues/517


minha estrutura de arquivos é como abaixo:

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

cole o abaixo na parte superior do seu app.ts e seu problema resolvido

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />




typescript