Açısal: Vaat, Harita, Set ve Yineleyici bulunamıyor


176

Eğik kurduktan sonra, typescript derleyici tutmak görmediklerine dair bazı hatalar alıyorsanız Promise, Map, Setve Iterator.

Şimdiye kadar onları görmezden geldi ama şimdi Promisebenim kod çalışabilir gerekir.

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

Hatalar:

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

1
Visual Studio 2015 için TypeScript'in en son sürümünü yükleyin .
mylesk

Yanıtlar:


177

Daktilo Yazısı ile Açısal 5 ^ 2.0.0

Bu, Angular 2 + 'nın önceki sürümlerinde de aynı şekilde çalışmalıdır.

Bu daktilo 2.0.0 ile çalışmak için aşağıdakileri yaptım.

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

Daktilo 2.0.0 ile @tipler hakkında daha fazla bilgi.

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

Kurulum Örneği:

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

Yinelenen Tanımlayıcı hataları

Bunun nedeni büyük olasılıkla yinelenen ecmascript 6 yazımlarının büyük olasılıkla eski bir es6-shim'den başka bir yerden içe aktarılmış olmasıdır.

Çifte kontrol typings.d.tsyapmak emin için atıf bulunmamaktadır es6. es6Varsa dizini dizininizden olan referansları kaldırın .

Örneğin:

Bu types:['core-js']typings.json ile çakışacaktır.

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

core-jsTürleri diziye dahil etmek , alındığı tsconfig.jsontek yer olmalıdır.

Açısal CLI 1.0.0-beta.30

Angular-CLI kullanıyorsanız, lib dizisini kaldırın typings.json. Bu, j-core türlerini bildirmeyle çelişiyor gibi görünüyor.

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

Açısal CLI kullanan Webstorm / Intellij Kullanıcıları

Yerleşik daktilo derleyicisinin devre dışı olduğundan emin olun. Bu CLI ile çelişecektir. Yazı tipinizi CLI ile derlemek için bir ng serveyapılandırma ayarlayabilirsiniz .

resim açıklamasını buraya girin

Tsconfig compilerOptions lib ve türler

Çekirdek js türü tanımlarını yüklememeyi tercih ederseniz, typescript ile birlikte gelen bazı es6 kütüphaneleri vardır. Bunlar lib: []tsconfig'deki özellik üzerinden kullanılır .

Örneğin buraya bakın: https://www.typescriptlang.org/docs/handbook/compiler-options.html

Not: --lib belirtilmezse, varsayılan kitaplık enjekte edilir. Enjekte edilen varsayılan kütüphane: ► --target ES5 için: DOM, ES5, ScriptHost ► --target ES6 için: DOM, ES6, DOM.Iterable, ScriptHost

tl; Dr.

Kısa cevap ya "lib": [ "es6", "dom" ]da "types": ["core-js"]çözmek için kullanılabilir can't find Promise,Map, Set and Iterator. Ancak her ikisinin kullanılması yinelenen tanımlayıcı hatalarına neden olur.


1
Güncelleme ve iyi cevap için teşekkürler. Bu hatayı şimdiye kadar ortadan kaldırmak için hala buraya gelen insanlar cevabınızı kabul ettim. RC 5'e cevabınızı güncelleme şansınız var mı? Bu hatayla karşılaşıyorum ve cevabınızı takip ederek söz verebildim ama şimdi node_modules \ @types \ es6-shim \ index.d.ts dosyasından çok sayıda hata var: "Yinelenen tanımlayıcı 'PropertyKey'." satırlarda: 6,10,248,283,290 ve benzeri; .. ayrıca hata: C: \ Kullanıcılar \ armyTik \ Masaüstü \ rc5 \ mağaza-app-02 \ node_modules \ typescript \ lib \ lib.es2015.core.d.ts: 17 : 13 Yinelenen tanımlayıcı 'PropertyKey'.
Stav Alfi

Cevabımı güncelledim. Umarım bu biraz şeyleri temizlemeye yardımcı olur. Bu hem RC5 hem de RC4 için aynı olmalı.
Kris Hollenbeck

Ayrıca bunu sadece core-j'leri yansıtacak şekilde değiştirdim, bu yüzden umarım daha az kafa karıştırıcı olur. core-js ve es6'nın her ikisi de es6'ya özgü tür bildirimleri içindir. Es6-shim'den daha fazlasını kapsadığı için core-j'leri tercih ederim.
Kris Hollenbeck

Güncelleme için teşekkürler. Bu sefer şansım olmadı. Mevcut hatalarımı güncelledim.
Stav Alfi

2
Muhtemelen, lib daha iyi bir çözümdür. github.com/angular/angular/blob/…
Alex

75

Kod bir Promise nesnesi oluşturmak istediğinde ben de - "Promise bulunamadı" - aynı sorun var.

System.js oluşturmak ve index.html dosyasına dahil etmek için System.config ({...}) alan çözüm de dahil olmak üzere stackoverflow üzerinde bulunan bazı çözümleri denedim.

Sonunda sorunu çözdüm. Sorun, index.html dosyasına es6-shim.min.js dosyasının dahil edilmesidir. Ancak, tsconfig.json içinde, "compilerOptions" altındaki "target" özelliği "es5" değerine sahiptir. Bunu "es6" olarak değiştirdikten sonra hata gitti.


2
Benim için de sorun buydu. Bunun neden bu hataya neden olacağını bilen var mı?
Nick Brady

IntelliJ IDEA / WebStorm'da aldığım hatalar da giderildi
bentolor

5
Ancak tüm tarayıcılar es6 için hazır olmadığından js kodu es5'e aktarılmalıdır. Herkesin farklı tarayıcılarda es6 sorunları var. Thankx!
bmnepali

açısal 2.1.0'da benim için çalışıyor. derleyici 2.1.0 çekirdek 2.1.0 ortak2.1.0 rxjs5.0.0-beta.12 platform-tarayıcı2.1.0
farhad goodarzi

Teşekkür ederim! Bana çok zaman
kazandın

63

Açısal 2 Final

- es5 desteği (TS 2.0.0 + ile mükemmel çalışır)

Her es6-shimiki türü birlikte es6-shimve core-jsbirlikte yüklediyseniz, güncelleme başına artık desteklenmemektedir . es6-shimTsconfig.json içinde yazarak yazmayı kaldırın . Şimdi içeride destek core-jsiçin aşağıya yazabilirsinizes5main.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 desteği

Sadece "target"özelliği olarak ayarlamanız gerekir es6, o zaman hepsi hata gider. Aktarılan kod es6formatta olacaktır .


Çok teşekkür ederim. Bunu kendi başıma bulma şansım yoktu.
Stav Alfi

@StavAlfi np .. bu .. Sana yardım etmekten memnun .. Teşekkürler :)
Pankaj Parkar

Beta.7 ile proje kurulumunu quickstart eğitiminde kullanıyorsanız kurulmalıdır. Hangi Angular beta sürümünü kullanıyorsunuz? Açılış değişikliğini açısal 2.0.0 beta.7 ile onaylıyorum
Marc

1
Hızlı başlangıç ​​eğitimindeki package.json, açısal 2'nin gerçek sürümünü destekler. Package.json kopyalarsanız. tscconfig.json ve typings.json proje kök dizini ve çağrı npm-install proje kurulumu iyi olacaktır.
Marc

3
@PankajParkar 2.0.0-rc.1. Angular'ı sadece birkaç gün önce kullanmaya başladım, ancak başlangıç ​​belgelerine [burada] () rağmen çalıştım. Gelen package.jsononlar koymak "angular2-in-memory-web-api": "0.0.7"ve açısal geri kalan eşyası geliyor dan "@angular/<module>": "2.0.0-rc.1"nerede <module>olduğunu common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecatedve upgrade.
Hector

42

Açısal 2.0.0-rc.4'ten itibaren güncellendi

TLDR;

  1. ES6'ya aktarma

    • hata gider (w / bazı gotchas).
  2. ES5'e aktarma

    • yazımları yükle
    • es6 şimini yükle
    • kodunuzla derlendiğinden emin olun.
    • hata giderilir.

Okuyucular için:

Seçenek 1: es6 veya es2015'e aktarma

tsconfig.json:

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

Unutmayın uglifyjs şu anda es6'yı desteklemiyor . Bu, üretim demetleri oluşturmanızı etkileyebilir.

2. Seçenek: es5'e aktarın, yazımları yükleyin ve sonra es6-shim'i yükleyin:

tsconfig.json:

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

Yazı tiplerini yükleyin, ardından es6-shim'i yükleyin:

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

Bu rotaya giderseniz, typescript derleyicisinin .d.ts dosyasını bulabildiğinden emin olmanız gerekir.

İki seçeneğiniz var:

a. Tsconfig.json dosyanızın, typings klasörü ile aynı düzeyde olduğundan emin olun.

b. Main.ts dosyanıza angular2 uygulamanızın önyükleme yaptığı bir başvuru ekleyin.

Seçenek A: tsconfig.json dosyanızın, typings klasörü ile aynı düzeyde olduğundan emin olun.

Not: Yazmalar klasörünü hariç tutmak için hariç tutma bayrağını KULLANMAYIN.

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

Seçenek B: Önyükleme öncesi ana dosyada referans (Bunu yapma):

Diğer yanıtlarda gösterildiği gibi, bu dosya artık Angular tarafından dahil edilmemiştir

main.ts:

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

2
Seçenek 1, RC4 için mükemmel bir şekilde çalışır. Ad alanı çakışmalarını önlemek için core-j'leri ve Promise, Map, vb. Sağlayan diğer yazışmaları kaldırdığınızdan emin olun.
wtfzn

1
Teşekkürler, 1 çalıştı. Core-js veya es6-shim (her ikisine birden değil) gerekir. Ve sonra derleme işleminize ./typings/index.d.ts dosyasını ekleyin.
k3a

1
--saveDevşimdilik çalışmıyor. --save-devyapar.
George Sovetov

1
Olmamalı typingsküresel kurulabilir?
George Sovetov


8

Bu benim için işe yaradı.

bir typings.jsondosya olup olmadığını kontrol edin ,

Böyle bir şeye benziyor,

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

Yazım paketini global olarak yükleyin.

sudo npm install -g typings

yükledikten sonra typings , koşmak

typings install

ardından sunucuyu yeniden başlatın.


6

Promise.resolve () yöntemini tanımayan benzer bir sorun vardı . Değiştim "hedef" için ES5 değeri ES6 içinde tsconfig.json . Bu sorunu çözdü.

Bu yardımcı olur umarım.


Evet bu kesinlikle bana yardımcı oldu - tsconfig.json içinde "hedef" değeri ES5'ten ES6'ya değiştirdi.
Greg Trevellick

5

Açısal 2 RC 0'a gittiğinden, /angular2/typings/browser.d.ts artık Açısal 2 dağılımının bir parçası değildir. Dosya ayrı olarak kurulabilir.

Buradan https://github.com/angular/angular/issues/8513 birkaç seçenek vardır. Benim için çalışan kişi:

typings install es6-shim --ambient --save

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

1
Bunun için teşekkürler, ancak 1.0+ yazımları için komut şöyledir: yazımlar yükleme dt ~ es6-shim --save --global ( github.com/typings/typings/issues/517 ) ve sonra /// <reference path = " yazmaları / es6-shim / es6-shim.d.ts "/>
Simon Trewhella

4

TS bootstrap dosyasına herhangi bir üçlü eğik çizgi başvurusu eklemek, ES6'ya değiştirmek zorunda kalmadan ( @DatBoi'nin söylediği gibi bir dizi sorunu beraberinde getiriyor ) güncelleme yapmadan bu sorunu düzeltmeyi başardım VS2015'leri NodeJSve / veya NPMbirlikte gelen yapıları güncelleyin veya typingsglobal olarak kurun .

İşte birkaç adımda yaptığım:

  • typingsproje package.jsondosyasına eklendi .
  • her NPM eyleminden sonra dosyaya yürütmek / güncellemek için bir scriptblok ekledi .package.jsontypings
  • ekledi typings.jsoncore-jsES5 / ES6 sorunlarını çözmek için şu anda en iyi shim / polyfill paketlerinden biri olan projenin kök klasörüne bir referans içeren dosya .

İşte böyle package.json dosyası (sadece ilgili hatlar) gibi görünmelidir:

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

Ve işte typings.json dosya:

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

( Jasmineve Nodezorunlu değildir, ancak gelecekte ihtiyacınız olması durumunda bunları saklamanızı öneririm).

Bu düzeltme, ihtiyacım olan Angular2 RC1 to RC4 ile iyi çalışıyor, ancak diğer ES6 özellikli kütüphane paketleriyle de benzer sorunları çözeceğini düşünüyorum.

AFAIK, bu VS2015 varsayılan ayarlarını bozmadan düzeltmenin mümkün olan en temiz yolu olduğunu düşünüyorum.

Daha fazla bilgi ve sorunun ayrıntılı bir analizi için blogumda bu yazıyı da okumanızı öneririz .


3

V1.0 + tipli Angular2 RC1 kullanıyorsanız şu komutu kullanın:

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

core-js tanımını yüklemek ve daha sonra main.ts dosyasında global dizininize başvurmak için:

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

Es6-shim veya başka bir shim kitaplığı kullanıyorsanız, bunun için yazımlar yükleyin

Bkz. Https://github.com/typings/typings/issues/517


2

Açısal 5'ten Açısal 6'ya yükselttikten sonra ortaya çıkan bu sorunları fark ettim. VS2017'de aşağıdakileri yaparak bunu düzeltmeyi başardım:

  • TypeScript SDK'nın özel sürümü, 2.9 için (Visual Studio Installer aracılığıyla) yüklendiğinden emin olun
  • Modül Sistemi proje özelliğinin tsconfig.json: ES2015 ile eşleşecek şekilde ayarlandığından emin olun. Bu, tsconfig dosyası projenin kök dizinindeyse genellikle otomatik olarak eşitlenir. Ancak, VS Açısal şablonunu kullandığım için, bu dosyaları bir "ClientApp" alt klasörüne yerleştirir ve Modül Sistemi proje özelliği ayarlanmadı.

VS2017 Proje Özellikleri

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

1

Sınıfımda bir söz nesnesi oluştururken de aynı problem yaşadım. Hedef adını "es6" olarak "es5" olarak değiştirmek sorunumu çözdü.


1

Olası başka bir çözüm yazımları yeniden yüklemektir:
Bu benim için çalışıyor"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. typingsDizini projeden sil (Dizin wwhere yazım modülleri yüklü)
  5. typings install
  6. npm run

1

Başka bir iyi çözüm. İçeriğin bulunduğu projenin kök dizininde bir typings.json dosyası oluşturmanız gerekir:

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

Daha sonra yüklü değilse genel veya yerel yazım paketini yükleyin (global olarak yüklüyorum):

sudo npm install --global typings

Proje kök dizininde şu komutu çalıştırın:

typings install

Bu sorun çözüldükten sonra. Tsconfig hedefini es6 veya es7 olarak değiştirmek gerekmez. Web uygulamanız bundan sonra tarayıcıların bazı eski sürümlerini desteklemiyor.


1

Bu hataları Visual Studio 2017'de gördüğünüz için buraya geldiyseniz, derlemeyi başardığınızda yukarıdaki gibi farklı bir sorununuz vardır. Bunun nedeni, dil hizmetinin tsconfig.json dosyanızı seçmemesidir.

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

Tsconfig.json dosyanızın Derleme Eylemini "İçerik" olarak ayarlamanız gerekir (Sağ tıklama -> Özellikler), sonra VS onu alır.


0

Referansı boot.ts dosyasında buldum doğru yol değildi. /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />Promise hatalarını gidermek için bu yolun güncellenmesi .


0

Açısal2 öğretici (kahraman) ile eğitim alıyorum.
Bu tür yanıtlarda @ types / core-js yükledikten sonra "Yinelenen tanımlayıcı" hatası aldım.
Benim durumumda, tsconfig.json'daki lib satırını kaldırmak olarak çözüldü.

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


-1

benim dosya yapısı aşağıdaki gibidir:

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

Aşağıdakileri uygulamanızın üstüne yapıştırın. t ve probleminiz çözüldü

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

TARGET girişini tsconfig.json içinde ES6'yı işaret edecek şekilde değiştirmek, yukarıdaki yanıtların bazılarında belirtildiği gibi bu sorunu benim için çözdü.
TheCopyPaster

-1

Aynı sorunu aldım ve bir sorun olduğunu belirten https://github.com/angular/angular-cli/issues/1901 adresindeki github'da bulabildim typescript@2.0.2.

Yazı tipini 2.0.0hem genel hem de yerel olarak eski sürüme düşür, çözmemde bana yardımcı oldu.

Küresel:

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

Yerel olarak: Yeni oluşturduğunuz proje klasörüne gidin

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

Ben de gelen package.json içinde typescript sürümünü değiştirdi ^2.0.0için 2.0.0, ama yerel typescript yüklemesini eski sürüme kadar işe yaramadı.


İnsanlar neden bunu küçümsüyor, bunun neden kötü bir fikir olduğunu bilmek istiyorum. Daktilo metni aktarılan bir dilse ve javascript'e dönüştürülmüşse, sadece tarayıcınız kadar güvenlidir, bu yüzden herhangi bir risk yok gibi değil mi?
kullanıcı3505901
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.