Postępowałem zgodnie z samouczkiem . Po zmianie app/maint.ts
w rozdziale Http pojawia się błąd podczas uruchamiania aplikacji z linii poleceń:
app / main.ts (5,51): błąd TS2307: nie można znaleźć modułu „angular2-in-memory-web-api”.
(Visual Studio Code daje mi ten sam błąd w main.ts - czerwone faliste podkreślenie).
Oto moje systemjs.config.js
:
/**
* System configuration for Angular 2 samples
* Adjust as necessary for your application needs.
*/
(function(global) {
// map tells the System loader where to look for things
var map = {
'app': 'app', // 'dist',
'@angular': 'node_modules/@angular',
'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
'rxjs': 'node_modules/rxjs'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { defaultExtension: 'js' },
};
var ngPackageNames = [
'common',
'compiler',
'core',
'http',
'platform-browser',
'platform-browser-dynamic',
'router',
'router-deprecated',
'upgrade',
];
// Add package entries for angular packages
ngPackageNames.forEach(function(pkgName) {
packages['@angular/'+pkgName] = { main: pkgName + '.umd.js', defaultExtension: 'js' };
});
var config = {
map: map,
packages: packages
}
System.config(config);
})(this);
Oto moje app/main.ts
:
// Imports for loading & configuring the in-memory web api
import { provide } from '@angular/core';
import { XHRBackend } from '@angular/http';
import { InMemoryBackendService, SEED_DATA } from 'angular2-in-memory-web-api';
import { InMemoryDataService } from './in-memory-data.service';
// The usual bootstrapping imports
import { bootstrap } from '@angular/platform-browser-dynamic';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from './app.component';
bootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(XHRBackend, { useClass: InMemoryBackendService }), // in-mem server
provide(SEED_DATA, { useClass: InMemoryDataService }) // in-mem server data
]);
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
w pliku systemjs.config.js (patrz odpowiedź @GrantTaylor).'angular2-in-memory-web-api/**/*.+(js|js.map)'
dovendorNpmFiles
tablicy w pliku angular-cli-build.js. Aftewards, należy wskazać swój system-config mapę tak:'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
. Następnie uruchom ponownieng serve
(lubnpm start
), aby pliki angular2-in-memory-web-api znalazły się w folderze dist / vendor.dependencies
dziale:"angular-in-memory-web-api": "0.1.1"
. Musiałem jednaknpm install
później uciekać z folderu projektu.Jeśli chodzi o projekty utworzone przy użyciu aktualnych narzędzi CLI, działało u mnie podczas instalacji
a następnie wykonaj import jako
źródło
npm install
polecenia otrzymałem wersję 0.3.2. Dzięki tej wersji mogłem dokładnie tak,import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
jak opisano w trasie.npm install
,import { InMemoryWebApiModule } from 'angular-in-memory-web-api'
działa.Oto, co zadziałało dla mnie:
Zauważyłem, że plik package.json miał następującą wersję:
„kątowy 2 -w-pamięci-web-api”: „0,0,20”
Zwróć uwagę na „ 2 ” w nazwie.
Jednak podczas odwoływania się do InMemoryWebApiModule używano „angular-in-memory-web-api” bez 2 w nazwie. Więc dodałem go i rozwiązałem problem:
import {InMemoryWebApiModule} z 'angular2-in-memory-web-api';
Uwaga : znalazłem to w sekcji powiadomień https://github.com/angular/in-memory-web-api
źródło
Angular 4 Zmiany
Od 17 października 2017 r. W samouczku nie wspomniano, że
angular-in-memory-web-api
nie jest uwzględniony w standardowej kompilacji interfejsu wiersza polecenia i należy go zainstalować oddzielnie. Można to łatwo zrobić za pomocąnpm
:$ npm install angular-in-memory-web-api --save
To automatycznie obsługuje niezbędne zmiany
package.json
, więc nie musisz samodzielnie wprowadzać zmian.Punkty nieporozumień
Wątek ten jest dość zagmatwany, ponieważ interfejs wiersza poleceń Angular znacznie się zmienił od czasu uruchomienia tego wątku; problem z wieloma szybko rozwijającymi się interfejsami API.
angular-in-memory-web-api
została zmieniona; po prostu opuszcza 2 z kątowej 2angular
systemjs.config.js
już nie istnieje.npm
„spackage.json
nie powinna być edytowane bezpośrednio; użyj CLI.Rozwiązanie
Od października 2017 r. Najlepszą poprawką jest po prostu samodzielna instalacja za pomocą
npm
, jak wspomniałem powyżej:$ npm install angular-in-memory-web-api --save
Powodzenia!
źródło
angular-in-memory-web-api
znpm
? 2. Czyangular-in-memory-web-api
w twoim jest wpis dlapackage.json
? 3. spróbuj zabić i ponownie uruchomić Angular CLI:Ctrl+C
zabić;ng serve
zrestartować). Czasami CLI zachowuje się dziwnie (tak samo w przypadku wtyczki Angular dla VSCode)Mi to pasuje:
W zestawie bloków zależności package.json (użyj „angular” zamiast „angular2”)
Następnie uruchomić
LUB
po prostu biegnij (moje preferowane)
źródło
Obecnie robię samouczek i miałem podobny problem. Wydaje się, że naprawiło to dla mnie zdefiniowanie głównego pliku
'angular2-in-memory-web-api'
wpackages
zmiennej wsystemjs.config.js
:Zanim to dodałem, zarejestrowano błąd 404 w
/node_modules/angular2-in-memory-web-api/
miejscu, w którym wydawało się, że próbuje załadować plik JavaScript. Teraz ładuje/node_modules/angular2-in-memory-web-api/index.js
i inne pliki w tym module.źródło
To rozwiązało problem 404
Z dokumentacji Angular in-memory-web-api
Importy modułów powinny mieć InMemoryWebApiModule wymienione po HttpModule
źródło
Z folderu głównego (folder zawiera plik package.json), używając:
źródło
Najprostszym rozwiązaniem, jakie przyszło mi do głowy, było zainstalowanie pakietu za pomocą npm i ponowne uruchomienie serwera:
Prawie zainstalowałem pakiet angular2-in-memory-web-api , ale strona npm mówi:
Uwaga : to rozwiązanie działało w przypadku projektu utworzonego za pomocą narzędzi CLI, który nie wymienia pakietu jako zależności i może nie rozwiązać problemu w przypadku projektów utworzonych za pomocą materiału siewnego Quickstart, który wymienia pakiet jako zależność .
źródło
ng serve
nadal działało podczas instalacji. Musiałem go zamknąć i uruchomić ponownie.Używam kątowej 4 i poniżej rozwiązało mój problem.
źródło
To był prawdziwy śmierdzący. Dzięki @traneHead, @toni i innym te kroki zadziałały dla mnie.
angular2-in-memory-web-api
do0.0.10
systemjs.config.js
:angular2-in-memory-web-api': { main: 'core.js', defaultExtension: 'js' }
źródło
Tworzę projekt za pomocą angular-cli i ustawiam w package.json "angular-in-memory-web-api": "^ 0.2.4" w bloku zależności, a następnie uruchamiam npm install.
Pracuj dla mnie: D
źródło
W przypadku użytkowników, którzy wygenerowali pusty projekt za pomocą kątowego cli 1.4.9 (stan faktyczny w październiku 2017 r.), A następnie zaczęli postępować zgodnie z instrukcjami krok po kroku, po prostu uruchom następujące polecenie:
Tylko to polecenie, bez niczego dodatkowego.
Mam nadzieję, że to oszczędza komuś czas
źródło
Jeśli używasz kątowego CLI, otrzymasz ten błąd.
Dodaj
'angular2-in-memory-web-api'
wconst barrels
pliku system-config.ts jak poniżej:I dodaj
'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
jak poniżej.Przebuduj używając
npm start
. To rozwiązało problem.źródło
Spróbuj dodać definicje maszynopisu:
... określając nazwę zależności:
Następnie dodaj punkt wejścia dla „angular2-in-memory-web-api” w /systemjs.config.js
źródło
Miałem ten sam problem, zmieniłem w systemjs.config:
W tej linii:
źródło
Zmiana tej linii, jak zasugerowano powyżej, zadziałała dla mnie w samouczku Angular 2 Heroes:
źródło
Rozwiązałem to kopiowanie
index.js
iindex.d.ts
docore.js
acore.d.ts
, to znaczy wewnątrznode_modules/angular2-in-memory-web-api
folderu. Idź się przekonać.źródło
Główna odpowiedź pomogła mi: zmiana
do
źródło
w app \ main.ts po prostu zmodyfikuj:
do:
następnie dodaj parametr index.js w
w systemjs.config.js
to dla mnie praca.
źródło
Ostatnia poprawka na ten dzień to
"angular-in-memory-web-api": "0.0.20"
na"angular-in-memory-web-api": "0.1.0"
i"zone.js": "^0.6.23"
na"zone.js": "^0.6.25"
'angular-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
źródło
Od ostatniego (obecnie 0.1.14), jest to zawarte w
CHANGELOG
źródło
Otrzymałem ten błąd, ponieważ importowałem
InMemoryWebApiModule
z.angular2-in-memory-web-api
Usunąłem 2. W rzeczywistości miałem dwa wpisy w moim pliku package.json; jeden był,angular2-in-memory-web-api
a drugi byłangular-in-memory-web-api
. Użycieangular-in-memory-web-api
rozwiązało problem za mnie. Więc twój import powinien wyglądać tak:Używając kli-kątowego nie musisz nic zmieniać
system.config.js
.źródło
U mnie działa po prostu instalacja z katalogu angular-tour-of-heroes
C: \ nodejs \ angular-tour-of-heroes> npm install angular-in-memory-web-api --save
źródło
Najlepszym sposobem jest zainstalowanie go za pomocą NPM np
npm zainstaluj git + https://github.com/itryan/in-memory-web-api/ --save
doda wymagane odniesienie
źródło
Napotkałem podobny problem. Właśnie pobrałem cały przykład pod koniec części 7 (ostatniej części) samouczka i uruchomiłem go. Zadziałało.
Oczywiście najpierw musisz wszystko zainstalować i skompilować.
Zmieniłem również „app-root” na „my-app” w app.component.ts.
źródło
Jeśli używasz angular cli do tworzenia aplikacji angular2, w tym angular2-in-memory-web-api, obejmuje trzy kroki:
dodaj interfejs API do pliku system-config.ts (w podkatalogu src), jak poniżej:
Dodaj
do tablicy vendorNpmFiles w pliku angular-cli-build.js, jak wspomniany w Shard;
Oczywiście dodaj do pliku package.json zgodnie z opisem w traneHead; dla 2.0.0-rc.3 używam wersji poniżej:
Uważam, że ten link „Dodawanie materiału2 do projektu” dość jasno wyjaśnia proces dodawania bibliotek innych firm.
źródło
InMemoryDataService
Klasa nie podlega jakiejkolwiek API. Musimy utworzyć klasę usług, a następnie zaimportować ją do pliku app.module.ts.źródło
Toni, musisz dodać typy dla Angular2-in-memory-web-api.
Dodaj je do swojego pliku TS.
źródło