Używam Angulara (wersja 2) z TypeScript (wersja 1.6) i kiedy kompiluję kod, dostaję następujące błędy:
Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(1,25): Error TS2304: Cannot find name 'MapConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(2,25): Error TS2304: Cannot find name 'SetConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(4,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(4,39): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(7,9): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(8,30): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(11,43): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(12,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(14,23): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(15,25): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(94,41): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(95,22): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(96,25): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/lang.d.ts(1,22): Error TS2304: Cannot find name 'BrowserNodeGlobal'.
node_modules/angular2/src/core/facade/lang.d.ts(33,59): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/promise.d.ts(1,10): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(3,14): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(8,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(9,38): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,35): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,93): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(11,34): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,149): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(13,43): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/linker/element_injector.d.ts(72,32): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(74,17): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(78,184): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(83,182): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(107,37): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/proto_view_factory.d.ts(27,146): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(52,144): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(76,79): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(77,73): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(94,31): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(97,18): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(100,24): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(103,142): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(104,160): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/render/api.d.ts(281,74): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/zone/ng_zone.d.ts(1,37): Error TS2304: Cannot find name 'Zone'.
To jest kod:
import 'reflect-metadata';
import {bootstrap, Component, CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<input type="text" [(ng-model)]="title" /><h1>{{title}}</h1>',
directives: [ CORE_DIRECTIVES ]
})
class AppComponent {
title :string;
constructor() {
this.title = 'hello angular 2';
}
}
bootstrap(AppComponent);
angular
typescript
użytkownik233232
źródło
źródło
import {ROUTER_PROVIDERS} from 'angular2/router';
Otrzymuję ten sam problem iz jakiegoś powodu to rozwiązuje problem dla mnie ...?!?Odpowiedzi:
Znany problem: https://github.com/angular/angular/issues/4902
Główny powód:
.d.ts
plik domyślnie zawarty w TypeScript różni się w zależności od celu kompilacji, więc podczas celowania trzeba mieć więcej deklaracji otoczenia,es5
nawet jeśli rzeczywiscie są obecne w środowiskach wykonawczych (np. Chrome). Więcej nalib.d.ts
źródło
W dzienniku zmian dla wersji 2.0.0-beta.6 (2016-02-11) wymieniono obejście (wymienione w części „Przełomowe zmiany”):
upewnij się, że masz prawidłową ścieżkę referencyjną, musiałem dodać ../ na początku, aby uzyskać to działające.
źródło
TS2304: Cannot find name 'module'
iTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Jakieś pomysły?Funkcje ES6, takie jak obietnice, nie są zdefiniowane podczas celowania w ES5. Istnieją inne biblioteki, ale core-js to biblioteka javascript, której używa zespół Angular. Zawiera wieloskładniki dla ES6.
Angular 2 bardzo się zmienił od czasu zadania tego pytania. Deklaracje typów są znacznie łatwiejsze w użyciu w Typescript 2.0.
W przypadku funkcji ES6 w Angular 2 nie potrzebujesz Pisania. Wystarczy użyć pisma maszynowego 2.0 lub nowszego i zainstalować @ typy / core-js z npm:
Następnie dodaj atrybuty TypeRoots i Types do pliku tsconfig.json:
Jest to o wiele łatwiejsze niż używanie Typów, jak wyjaśniono w innych odpowiedziach. Zobacz post na blogu Microsoftu, aby uzyskać więcej informacji: Typescript: The Future of Declaration Files
źródło
typeRoots
jeśli masz tylko jeden wpisnode_modules/@types
.TypeRoots
iTypes
do tsconfig.json. W moim przypadku musiałem również zaktualizować moją wtyczkę Gulp gulp-typescript 2.x, która była transpilowana przy użyciu i osadzonej wersji TypeScript 1, ale kiedy zaktualizowałem, więc użyłem TypeScript 2 i dodałem polypypełkę @ types / core-js zestaw. Wielkie dzięki.Dla tych, którzy postępują zgodnie z samouczkiem Angular2,
angular.io
aby być jawnym, oto rozszerzenie odpowiedzi mvdluit, gdzie dokładnie należy umieścić kod:Twój
main.ts
powinien wyglądać tak:Pamiętaj, że zostawiasz
///
ukośniki, nie usuwaj ich.ref: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
źródło
_references.js
nim linię odniesienia, to nie będzie działać. Musi znajdować się wewnątrz komponentu, jak sugeruje to odpowiedź. Dodatkowo użyj../../
zamiast../
ścieżki.browser.d.ts
folderu poniżej typów. Tylko.js
pliki poniżejdist
. Jest plik o nazwie,typings.d.ts
więc pomyślałem, że to nowy, ale to nie rozwiązało problemu. Budowanie dla „es6” działa, ale IE narzeka. Więc utknąłem z kompilacją „es5” i bez pisania! : /npm install -g typings typings install
.d.ts
z pakietu pism. Aby spełnić wymagania IE9 +, musiałem budować dla es3.Udało mi się to naprawić za pomocą następującego polecenia
Pamiętaj, że musisz
typings
sprawić, by powyższe polecenie działało, jeśli go nie masz, uruchom następujące polecenie, aby je zainstalowaćAKTUALIZACJA
aktualizacja typów nie czyta
--ambient
, stało się to--global
również dla niektórych osób, które muszą zainstalować definicje powyższych bibliotek, wystarczy użyć następującego poleceniaDzięki @bgerth za zwrócenie na to uwagi.
źródło
typings install dt~es6-promise dt~es6-collections --global --save
typings
aktualizacji, dodam twoje rozwiązanie do odpowiedziJeśli masz Typescript> = 2, opcja „lib” w tsconfig.json wykona zadanie. Nie ma potrzeby pisania. https://www.typescriptlang.org/docs/handbook/compiler-options.html
źródło
Dla
Angular 2.0.0-rc.0
dodawanianode_modules/angular2/typings/browser.d.ts
nie będzie działać. Najpierw dodaj plik typings.json do swojego rozwiązania z następującą zawartością:A następnie zaktualizuj
package.json
plik, aby zawierał topostinstall
:Teraz biegnij
npm install
Teraz również powinieneś zignorować
typings
folder w swoimtsconfig.json
pliku:Aktualizacja
Teraz AngularJS 2.0 używa
core-js
zamiastes6-shim
. Aby uzyskać więcej informacji, postępuj zgodnie z jego plikiem szybkiego startu typings.json .źródło
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769możesz dodać kod na początku plików .ts.
źródło
Dostałem to na Angular 2 rc1. Okazuje się, że niektóre nazwy zostały zmienione przy użyciu wersji v1 w stosunku do starego 0.x. Te
browser.d.ts
pliki stałindex.d.ts
.Po bieganiu
typings install
zlokalizuj plik startowy (w którym ładujesz) i dodaj:/// <reference path="../typings/index.d.ts" />
(lub bez../
jeśli plik startowy znajduje się w tym samym folderze, co folder z typami)Dodawanie
index.d.ts
do listy plików wtsconfig.json
nie działało z jakiegoś powodu.Ponadto
es6-shim
pakiet nie był potrzebny.źródło
Udało mi się to naprawić, instalując
typings
moduł.(Korzystanie z ng 2.0.0-rc.1)
źródło
Miałem ten sam problem i rozwiązałem go za pomocą
lib
opcji wtsconfig.json
. Jak powiedział basarat w swojej odpowiedzi ,.d.ts
plik jest domyślnie dołączony przez TypeScript w zależności odtarget
opcji kompilacji , ale to zachowanie można zmienić za pomocąlib
opcji.Można określić dodatkowe pliki definicji, które mają zostać dołączone, bez zmiany docelowej wersji JS. Na przykład jest to część mojego aktualnego
compilerOptions
dla [email protected] i dodaje obsługęes2015
funkcji bez instalowania czegokolwiek innego:Aby uzyskać pełną listę dostępnych opcji, sprawdź oficjalny dokument .
Zauważ też, że dodałem
"types": ["node"]
i zainstalowałem,npm install @types/node
aby obsługiwaćrequire('some-module')
mój kod.źródło
i dodaj poprawną ścieżkę do index.d.ts
Próbowałem na @ angular-2.0.0-rc3
źródło
Jeśli
npm install -g typings typings install
nadal nie pomaga, usuń foldery_węzłów i typów, zanim wykonasz to polecenie.źródło
Właśnie dlatego pomyśl, jak każdy próbuje zrobić coś innego. Wierzę, że te systemy wciąż są dalekie od ostatecznej wersji.
W moim przypadku zaktualizowałem z rc.0 do rc.5 ten błąd pojawił się.
Moją stałą zmianą była zmiana pliku tsconfig.json.
źródło
"lib"
, nie"target"
.dodaj typing.d.ts w głównym folderze aplikacji, a tam zadeklaruj zmienną, której chcesz używać za każdym razem
po zadeklarowaniu tego podczas pisania.d.ts, błąd wymagający nie pojawi się w aplikacji.
źródło
Jestem nowy w Angular, ale dla mnie rozwiązanie zostało znalezione przez po prostu importowanie danych wejściowych. Nie mogę przypisać sobie tego, znalazłem go na innej tablicy. Jest to prosta poprawka, jeśli masz ten sam problem, ale jeśli Twoje problemy są bardziej złożone, przeczytam powyższe informacje.
Mukesh :
źródło
Znalazłem ten bardzo pomocny dokument na stronie Angular 2. W końcu pozwoliło mi to działać poprawnie, podczas gdy inne odpowiedzi tutaj, aby zainstalować typowanie, zawiodły mnie różnymi błędami. (Ale pomógł poprowadzić mnie we właściwym kierunku).
Zamiast dołączania kolekcji es6-promise i es6, zawiera core-js, co załatwiło sprawę ... bez konfliktów z podstawowymi definicjami ts Angular2. Ponadto dokument wyjaśnił, jak skonfigurować to wszystko, aby działo się to automatycznie podczas instalowania NPM i jak modyfikować plik typings.json.
źródło
Angular 2 RC1 zmienił nazwę
node_modules/angular2
katalogu nanode_modules/angular
.Jeśli używasz pliku gulpfile do kopiowania plików do katalogu wyjściowego, który prawdopodobnie nadal masz
node_modules/angular
tam siedzisz, co może zostać odebrane przez kompilator i dezorientować się samo z siebie.Więc (ostrożnie) wyczyść to, co masz w
node_modules
wersji beta, a także usuń wszystkie stare typy i uruchom ponownietypings install
.źródło
Dobra rozmowa, @ VahidN, uznałem, że potrzebuję
W moim
tsconfig
też, aby zatrzymać błędy odes6-shim
siebieźródło
Zaimportuj poniższą instrukcję do pliku JS.
źródło
import './rxjs-extensions';
doapp.component.ts
niego plik rxjs-extensions z samouczka angular2 (w tym sugerowanej linii) i wygląda na to, że usunął te błędy.Przyjęta odpowiedź nie zapewnia realnej poprawki, a większość pozostałych sugeruje obejście „potrójnych cięć”, które nie jest już wykonalne, ponieważ
browser.d.ts
zostało usunięte przez najnowsze RC Angular2 i dlatego nie jest już dostępne.Zdecydowanie sugeruję zainstalowanie
typings
modułu zgodnie z sugestią kilku rozwiązań tutaj, ale nie jest to konieczne, aby zrobić to ręcznie lub globalnie - istnieje skuteczny sposób, aby to zrobić tylko dla twojego projektu i w interfejsie VS2015. Oto, co musisz zrobić:typings
w pliku package.json projektu.script
blok dopackage.json
pliku, aby wykonać / zaktualizowaćtypings
po każdej akcji NPM.typings.json
plik do folderu głównego projektu zawierający odniesienie docore-js
(ogólnie lepiej niżes6-shim
atm).Otóż to.
Możesz także zajrzeć do tego innego wątku SO i / lub przeczytać ten post na moim blogu, aby uzyskać dodatkowe informacje.
źródło
Ten błąd pojawiał się po scaleniu mojej gałęzi deweloperskiej z moją bieżącą gałęzią. Spędziłem trochę czasu, aby rozwiązać problem. Jak widać na poniższym obrazku, kody nie mają żadnego problemu.
Więc jedyna poprawka, która zadziałała, to ponowne uruchomienie VSCode
źródło
Teraz musisz je zaimportować ręcznie.
źródło
Zaktualizuj
tsconfig.json
, zmieńdo
źródło