Ich habe das Tutorial befolgt . Nach dem Ändern app/maint.ts
im HTTP-Kapitel erhalte ich die Fehlermeldung beim Starten der App über die Befehlszeile:
app / main.ts (5,51): Fehler TS2307: Modul 'angle2-in-memory-web-api' kann nicht gefunden werden.
(Visual Studio Code gibt mir den gleichen Fehler in main.ts - rot gewellte Unterstreichung.)
Hier ist mein 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);
Hier ist mein 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' }
in der Datei systemjs.config.js angeben (siehe Antwort von @GrantTaylor).'angular2-in-memory-web-api/**/*.+(js|js.map)'
dasvendorNpmFiles
Array in der Datei Angular-Cli-Build.js ergänzen. Anschließend müssen Sie Ihre Systemkonfigurationszuordnung wie folgt anzeigen :'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
. Führen Sie dann erneut ausng serve
(odernpm start
), damit die Angular2-in-Memory-Web-API-Dateien im Ordner dist / vendor landen.dependencies
Abschnitt :"angular-in-memory-web-api": "0.1.1"
. Ich musstenpm install
danach allerdings aus dem Projektordner laufen .Bei Projekten, die mit den aktuellen CLI-Tools erstellt wurden, funktionierte dies bei der Installation
und dann Import als ausführen
quelle
npm install
ich den Befehl ausgeführt hatte, bekam ich Version 0.3.2. Mit dieser Version konnte ich genauimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';
wie in der Tour beschrieben.npm install
,import { InMemoryWebApiModule } from 'angular-in-memory-web-api'
funktioniert es nach dem Ausführen .Folgendes hat bei mir funktioniert:
Ich habe festgestellt, dass die package.json die folgende Version hat:
"angular 2 -in-Speicher-web-api": "0.0.20"
Beachten Sie die " 2 " im Namen.
Beim Verweisen auf InMemoryWebApiModule wurde jedoch 'Angular-In-Memory-Web-API' ohne die 2 im Namen verwendet. Also habe ich es hinzugefügt und es hat das Problem behoben:
{InMemoryWebApiModule} aus 'angle2-in-memory-web-api' importieren;
Hinweis : Ich habe dies im Hinweisabschnitt von https://github.com/angular/in-memory-web-api gefunden
quelle
Winkel 4 Änderungen
Ab dem 17. Oktober 2017 wird im Lernprogramm nicht erwähnt, dass dies
angular-in-memory-web-api
nicht in einem Standard-CLI-Build enthalten ist und separat installiert werden muss. Dies kann leicht gemacht werden mitnpm
:$ npm install angular-in-memory-web-api --save
Dadurch werden die erforderlichen Änderungen automatisch vorgenommen
package.json
, sodass Sie keine Änderungen selbst vornehmen müssen.Verwirrungspunkte
Dieser Thread ist ziemlich verwirrend, da sich die Angular-CLI seit dem Start dieses Threads erheblich geändert hat. Ein Problem mit vielen sich schnell entwickelnden APIs.
angular-in-memory-web-api
wurde umbenannt; es lässt die 2 von Winkel 2 auf einfach fallenangular
systemjs.config.js
nicht mehr vorhanden.npm
'spackage.json
sollten nicht direkt bearbeitet werden; Verwenden Sie die CLI.Lösung
Ab Oktober 2017 ist die beste Lösung, es einfach selbst zu installieren
npm
, wie oben erwähnt:$ npm install angular-in-memory-web-api --save
Viel Glück da draußen!
quelle
angular-in-memory-web-api
mitnpm
? 2. Gibt es einen Eintrag fürangular-in-memory-web-api
in Ihrempackage.json
? 3. Versuchen Sie, die Angular CLICtrl+C
zu beenden und neu zu starten: um zu töten;ng serve
Neustarten). Manchmal verhält sich die CLI seltsam (Ditto für das Angular-Plugin für VSCode)Für mich geht das:
In package.json Abhängigkeiten Block gesetzt (verwenden Sie "Winkel" anstelle von "Winkel2")
Dann renne
ODER
einfach nur rennen (mein bevorzugter)
quelle
Ich mache gerade das Tutorial und hatte ein ähnliches Problem. Was es für mich behoben zu haben scheint, ist das Definieren einer Hauptdatei für
'angular2-in-memory-web-api'
in derpackages
Variablen insystemjs.config.js
:Bevor ich dies hinzufügte, wurde ein 404-Fehler protokolliert, bei
/node_modules/angular2-in-memory-web-api/
dem versucht wurde, eine JavaScript-Datei zu laden. Jetzt werden/node_modules/angular2-in-memory-web-api/index.js
die anderen Dateien in diesem Modul geladen.quelle
Dies löste das 404-Problem
Aus der Angular In-Memory-Web-API-Dokumentation
Bei Modulimporten sollte InMemoryWebApiModule nach HttpModule aufgeführt sein
quelle
Verwenden Sie in Ihrem Stammordner (der Ordner enthält package.json) Folgendes:
quelle
Die einfachste Lösung, die ich mir vorstellen konnte, war, das Paket mit npm zu installieren und den Server neu zu starten:
Ich hätte fast das Paket angle2-in-memory-web-api installiert , aber auf der npm-Seite steht:
Hinweis : Diese Lösung funktionierte für ein Projekt, das mit den CLI-Tools erstellt wurde, in denen das Paket nicht als Abhängigkeit aufgeführt ist, und möglicherweise nicht das Problem für Projekte, die mit dem Quickstart-Startwert erstellt wurden, in dem das Paket als Abhängigkeit aufgeführt ist .
quelle
ng serve
es noch lief, während dies installiert wurde. Musste es herunterfahren und neu starten.Ich benutze Winkel 4 und unten hat mein Problem gelöst.
quelle
Das war ein echter Stinker. Dank @traneHead, @toni und anderen haben diese Schritte für mich funktioniert.
angular2-in-memory-web-api
auf0.0.10
systemjs.config.js
:angular2-in-memory-web-api': { main: 'core.js', defaultExtension: 'js' }
quelle
Ich erstelle mein Projekt mit angle-cli und setze in package.json "angle-in-memory-web-api": "^ 0.2.4" im Abhängigkeitsblock und führe dann npm install aus.
Arbeite für mich: D.
quelle
Für Benutzer, die ein leeres Projekt mit Angular Cli 1.4.9 (Stand Oktober 2017) generiert und dann Schritt für Schritt die Anweisungen befolgt haben, führen Sie einfach den folgenden Befehl aus:
Nur dieser Befehl, ohne zusätzliche Informationen.
Hoffe das spart jemandem Zeit
quelle
Wenn Sie Angular Cli verwenden, wird dieser Fehler angezeigt.
Bitte fügen Sie
'angular2-in-memory-web-api'
in derconst barrels
Datei system-config.ts Folgendes hinzu:Und
'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
wie unten hinzufügen .Neu erstellen mit
npm start
. Dies löste das Problem für mich.quelle
Versuchen Sie, die Typoskriptdefinitionen hinzuzufügen:
... Angabe des Abhängigkeitsnamens:
Fügen Sie dann den Einstiegspunkt für "angle2-in-memory-web-api" in /systemjs.config.js hinzu
quelle
Ich hatte das gleiche Problem, ich habe es in systemjs.config geändert:
Durch diese Zeile:
quelle
Das Ändern dieser Zeile, wie oben vorgeschlagen, hat im Angular 2 Heroes Tutorial für mich funktioniert:
quelle
Ich löste es kopieren
index.js
undindex.d.ts
zucore.js
undcore.d.ts
, das heißt, innerhalbnode_modules/angular2-in-memory-web-api
Ordner. Finde es heraus.quelle
Die Hauptantwort hat mir geholfen: Veränderung
zu
quelle
in app \ main.ts einfach ändern:
zu:
Fügen Sie dann den Parameter index.js in hinzu
in systemjs.config.js
Es ist Arbeit für mich.
quelle
Der letzte Fix ab diesem Datum ist zu
"angular-in-memory-web-api": "0.0.20"
nach"angular-in-memory-web-api": "0.1.0"
und"zone.js": "^0.6.23"
nach"zone.js": "^0.6.25"
'angular-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
quelle
Ab dem neuesten Stand (derzeit 0.1.14) ist dies in der
CHANGELOG
quelle
Ich habe diesen Fehler , weil ich den Import
InMemoryWebApiModule
ausangular2-in-memory-web-api
ich die 2. Eigentlich entfernt hatte ich zwei Einträge in meiner package.json - Datei; einer warangular2-in-memory-web-api
und der zweite warangular-in-memory-web-api
. Mit hatangular-in-memory-web-api
das Problem für mich gelöst. Ihr Import sollte also so aussehen:Mit cli-angle müssen Sie nichts daran ändern
system.config.js
.quelle
Für mich funktioniert es nur, eine Installation aus dem Angular-Tour-of-Heroes-Verzeichnis durchzuführen
C: \ nodejs \ Angular-Tour-of-Heroes> npm Installiere Angular-In-Memory-Web-API - Speichern
quelle
Der beste Weg ist, es mit NPM zu installieren, z
npm installiere git + https://github.com/itryan/in-memory-web-api/ --save
Es wird die erforderliche Referenz hinzugefügt
quelle
Ich bin auf ein ähnliches Problem gestoßen. Ich habe gerade das gesamte Beispiel gegen Ende von Teil 7 (letzter Teil) des Tutorials heruntergeladen und ausgeführt. Es funktionierte.
Natürlich müssen Sie zuerst alles installieren und kompilieren.
Ich habe auch 'app-root' in 'my-app' in app.component.ts geändert.
quelle
Wenn Sie Angular CLI zum Erstellen Ihrer Angular2-App verwenden, umfasst das Angular2-in-Memory-Web-API drei Schritte:
Fügen Sie die API wie folgt zur Datei system-config.ts (im Unterverzeichnis src) hinzu:
Hinzufügen
auf das VendorNpmFiles-Array in der Datei angle-cli-build.js wie von Hard erwähnt;
Fügen Sie natürlich die package.json hinzu, wie von traneHead beschrieben. für 2.0.0-rc.3 verwende ich die folgende Version:
Ich finde, dass dieser Link "Hinzufügen von Material2 zu Ihrem Projekt" den Prozess des Hinzufügens von Bibliotheken von Drittanbietern ziemlich klar erklärt.
quelle
Die
InMemoryDataService
Klasse fällt unter keine API. Wir müssen eine Serviceklasse erstellen und diese Serviceklasse dann in die Datei app.module.ts importieren.quelle
Toni, Sie müssen die Typisierungen für Angular2-in-Memory-Web-API hinzufügen.
Fügen Sie sie Ihrer TS-Datei hinzu.
quelle