J'ai suivi le tutoriel . Après avoir changé app/maint.ts
dans le chapitre Http, j'obtiens l'erreur lors du démarrage de l'application via la ligne de commande:
app / main.ts (5,51): erreur TS2307: Impossible de trouver le module 'angular2-in-memory-web-api'.
(Visual Studio Code me donne la même erreur dans main.ts - soulignement ondulé rouge.)
Voici mon 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);
Voici mon 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' }
dans le fichier systemjs.config.js (voir la réponse de @GrantTaylor).'angular2-in-memory-web-api/**/*.+(js|js.map)'
auvendorNpmFiles
tableau dans le fichier angular-cli-build.js. Aftewards, vous devez pointer votre carte system-config comme ceci:'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
. Et puis réexécutezng serve
(ounpm start
) pour que les fichiers angular2-in-memory-web-api se retrouvent dans le dossier dist / vendor.dependencies
section:"angular-in-memory-web-api": "0.1.1"
. J'ai dû courir ànpm install
partir du dossier du projet par la suite, cependant.Quant aux projets créés à l'aide des outils CLI actuels, cela a fonctionné pour moi en installant
puis effectuer l'importation en tant que
la source
npm install
commande, j'ai obtenu la version 0.3.2. Avec cette version, je pourrais toutimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';
comme décrit dans la tournée.npm install
,import { InMemoryWebApiModule } from 'angular-in-memory-web-api'
fonctionne.Voici ce qui a fonctionné pour moi:
J'ai remarqué que package.json avait la version suivante:
"angular 2 -in-memory-web-api": "0.0.20"
Notez le " 2 " dans le nom.
Cependant, lors du référencement d'InMemoryWebApiModule, il utilisait 'angular-in-memory-web-api' sans le 2 dans le nom. Je l'ai donc ajouté et cela a résolu le problème:
importer {InMemoryWebApiModule} depuis 'angular2-in-memory-web-api';
Remarque : j'ai trouvé cela dans la section d'avis de https://github.com/angular/in-memory-web-api
la source
Changements angulaires 4
Depuis le 17 octobre 2017, le didacticiel ne mentionne pas que ce
angular-in-memory-web-api
n'est pas inclus dans une version CLI standard et doit être installé séparément. Cela peut être facilement fait avecnpm
:$ npm install angular-in-memory-web-api --save
Cela gère automatiquement les modifications nécessaires pour
package.json
, vous n'avez donc pas besoin de les modifier vous-même.Points de confusion
Ce thread est assez déroutant car la CLI angulaire a considérablement changé depuis le démarrage de ce thread; un problème avec de nombreuses API en évolution rapide.
angular-in-memory-web-api
a été renommé; il fait passer le 2 de 2 angulaire à simplementangular
systemjs.config.js
n'existe plus.npm
« spackage.json
ne doivent pas être modifiées directement; utilisez la CLI.Solution
Depuis octobre 2017, la meilleure solution consiste simplement à l'installer vous-même en utilisant
npm
, comme je l'ai mentionné ci-dessus:$ npm install angular-in-memory-web-api --save
Bonne chance!
la source
angular-in-memory-web-api
avecnpm
? 2. Y a-t-il une entrée pourangular-in-memory-web-api
dans votrepackage.json
? 3. essayez de tuer et de redémarrer la CLI angulaire:Ctrl+C
pour tuer;ng serve
recommencer). Parfois, la CLI agit bizarrement (Idem pour le plugin Angular pour VSCode)Ça marche pour moi:
Dans l'ensemble de blocs de dépendances package.json (utilisez "angular" au lieu de "angular2")
Puis cours
OU
il suffit de courir (mon préféré)
la source
Je suis actuellement en train de faire le tutoriel et j'ai eu un problème similaire. Ce qui semble l'avoir résolu pour moi, c'est de définir un fichier principal pour
'angular2-in-memory-web-api'
lapackages
variable danssystemjs.config.js
:Avant d'ajouter cela, il y avait une erreur 404 enregistrée pour l'
/node_modules/angular2-in-memory-web-api/
endroit où il semblait essayer de charger un fichier JavaScript. Maintenant, il se charge/node_modules/angular2-in-memory-web-api/index.js
et les autres fichiers de ce module.la source
Cela a résolu le problème 404
À partir de la documentation Angular in-memory-web-api
Les importations de modules doivent avoir InMemoryWebApiModule répertorié après HttpModule
la source
Depuis votre dossier racine (le dossier contient package.json), en utilisant:
la source
La solution la plus simple à laquelle je pouvais penser était d'installer le package avec npm et de redémarrer le serveur:
J'ai presque installé le package angular2-in-memory-web-api , mais la page npm dit:
Remarque : cette solution fonctionnait pour un projet qui a été créé avec les outils CLI, qui ne répertorie pas le package en tant que dépendance, et peut ne pas résoudre le problème des projets créés avec la valeur de départ Quickstart, qui répertorie le package en tant que dépendance .
la source
ng serve
était toujours en cours d'exécution pendant son installation. J'ai dû l'éteindre et redémarrer.J'utilise angulaire 4 et ci-dessous a résolu mon problème.
la source
C'était une vraie puanteur. Grâce à @traneHead, @toni et d'autres, ces étapes ont fonctionné pour moi.
angular2-in-memory-web-api
à0.0.10
systemjs.config.js
:angular2-in-memory-web-api': { main: 'core.js', defaultExtension: 'js' }
la source
Je crée mon projet en utilisant angular-cli et je mets dans package.json "angular-in-memory-web-api": "^ 0.2.4" dans le bloc de dépendances, puis j'exécute npm install.
Travaille pour moi: D
la source
Pour les utilisateurs qui ont généré un projet vide avec angular cli 1.4.9 (réel en octobre 2017) et qui ont ensuite commencé, suivez les instructions étape par étape, exécutez simplement la commande suivante:
Juste cette commande, sans rien de plus.
J'espère que ça fait gagner du temps à quelqu'un
la source
Si vous utilisez angular cli, vous obtiendrez cette erreur.
Veuillez ajouter
'angular2-in-memory-web-api'
leconst barrels
dans le fichier system-config.ts comme ci-dessous:Et ajoutez
'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
comme ci-dessous.Reconstruisez en utilisant
npm start
. Cela a résolu le problème pour moi.la source
Essayez d'ajouter les définitions dactylographiées:
... en spécifiant le nom de la dépendance:
Ajoutez ensuite le point d'entrée pour "angular2-in-memory-web-api" dans /systemjs.config.js
la source
J'ai eu le même problème, j'ai changé dans systemjs.config:
Par cette ligne:
la source
Changer cette ligne, comme suggéré ci-dessus, a fonctionné pour moi dans le didacticiel Angular 2 Heroes:
la source
Je l'ai résolu en copiant
index.js
etindex.d.ts
verscore.js
etcore.d.ts
, c'est-à-dire à l'intérieur dunode_modules/angular2-in-memory-web-api
dossier. Allez comprendre.la source
La réponse principale m'a aidé: changer
à
la source
dans app \ main.ts modifiez simplement:
à:
puis ajoutez le paramètre index.js dans
dans systemjs.config.js
c'est du travail pour moi.
la source
Le dernier correctif à cette date est de
"angular-in-memory-web-api": "0.0.20"
vers"angular-in-memory-web-api": "0.1.0"
et"zone.js": "^0.6.23"
vers"zone.js": "^0.6.25"
'angular-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
la source
À partir de la dernière version (actuellement 0.1.14), c'est ce qui est indiqué dans le
CHANGELOG
la source
J'ai eu cette erreur parce que j'importais
InMemoryWebApiModule
depuisangular2-in-memory-web-api
J'ai supprimé le 2. En fait, j'avais deux entrées dans mon fichier package.json; l'un étaitangular2-in-memory-web-api
et le second étaitangular-in-memory-web-api
. L'utilisation aangular-in-memory-web-api
résolu le problème pour moi. Donc, votre importation devrait être comme ceci:En utilisant cli-angular, vous ne devez rien changer
system.config.js
.la source
Pour moi, faire une installation à partir du répertoire angular-tour-of-heroes fonctionne pour moi
C: \ nodejs \ angular-tour-of-heroes> npm install angular-in-memory-web-api --save
la source
La meilleure façon est de l'installer en utilisant NPM par exemple
npm installer git + https://github.com/itryan/in-memory-web-api/ --save
il ajoutera la référence requise
la source
J'ai rencontré un problème similaire. Je viens de télécharger l'intégralité de l'exemple vers la fin de la partie 7 (dernière partie) du didacticiel et je l'ai exécuté. Ça a marché.
Bien sûr, vous devez d'abord tout installer et compiler.
J'ai également changé 'app-root' en 'my-app' dans app.component.ts.
la source
Si vous utilisez angular cli pour créer votre application angular2, y compris l'api angular2-in-memory-web-api implique trois étapes:
ajoutez l'API au fichier system-config.ts (dans le sous-répertoire src) comme ci-dessous:
Ajouter
au tableau vendorNpmFiles dans le fichier angular-cli-build.js comme ofShard mentionné;
Bien sûr, ajoutez au package.json comme décrit par traneHead; pour 2.0.0-rc.3 j'utilise la version ci-dessous:
Je trouve que ce lien «Ajout de matériel2 à votre projet» explique assez clairement le processus d'ajout de bibliothèques tierces.
la source
La
InMemoryDataService
classe ne relève d'aucune API. Nous devons créer une classe de service, puis importer cette classe de service dans le fichier app.module.ts.la source
Toni, Vous devez ajouter les typages pour Angular2-in-memory-web-api.
Ajoutez-les dans votre fichier TS.
la source