He seguido el Tutorial . Después de cambiar app/maint.ts
en el capítulo Http, aparece el error al iniciar la aplicación a través de la línea de comando:
app / main.ts (5,51): error TS2307: No se puede encontrar el módulo 'angular2-in-memory-web-api'.
(Visual Studio Code me da el mismo error dentro de main.ts: subrayado rojo ondulado).
Aquí está mi 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);
Aquí está mi 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' }
en el archivo systemjs.config.js (ver la respuesta de @GrantTaylor).'angular2-in-memory-web-api/**/*.+(js|js.map)'
a lavendorNpmFiles
matriz en el archivo angular-cli-build.js. Aftewards, se deben señalar su mapa system-config de este modo:'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
. Y luego vuelva a ejecutarng serve
(onpm start
) para que los archivos angular2-in-memory-web-api terminen en la carpeta dist / vendor.dependencies
apartado:"angular-in-memory-web-api": "0.1.1"
. Sinnpm install
embargo, tuve que ejecutar desde la carpeta del proyecto después.En cuanto a los proyectos creados con las herramientas CLI actuales, me funcionó instalando
y luego realizar la importación como
fuente
npm install
comando, obtuve la versión 0.3.2. Con esa versión, pude talimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';
como se describe en la gira.npm install
,import { InMemoryWebApiModule } from 'angular-in-memory-web-api'
funciona.Esto es lo que funcionó para mí:
Noté que package.json tenía la siguiente versión:
"angular 2 -in-memory-web-api": "0.0.20"
Tenga en cuenta el " 2 " en el nombre.
Sin embargo, al hacer referencia a InMemoryWebApiModule, estaba usando 'angular-in-memory-web-api' sin el 2 en el nombre. Así que lo agregué y resolvió el problema:
importar {InMemoryWebApiModule} desde 'angular2-in-memory-web-api';
Nota : Encontré esto en la sección de avisos de https://github.com/angular/in-memory-web-api
fuente
Cambios de Angular 4
A partir del 17 de octubre de 2017, el tutorial no menciona que
angular-in-memory-web-api
no está incluido en una compilación de CLI estándar y debe instalarse por separado. Esto se puede hacer fácilmente connpm
:$ npm install angular-in-memory-web-api --save
Esto maneja automáticamente los cambios necesarios para
package.json
, por lo que no es necesario que los edites tú mismo.Puntos de confusión
Este hilo es bastante confuso ya que la CLI de Angular ha cambiado significativamente desde que se inició este hilo; un problema con muchas API en rápida evolución.
angular-in-memory-web-api
ha sido renombrado; deja caer el 2 del angular 2 a simplementeangular
systemjs.config.js
ya no existe.npm
'spackage.json
no deben ser editados directamente; utilice la CLI.Solución
A partir de octubre de 2017, la mejor solución es simplemente instalarlo usted mismo usando
npm
, como mencioné anteriormente:$ npm install angular-in-memory-web-api --save
¡Buena suerte ahí fuera!
fuente
angular-in-memory-web-api
connpm
? 2. ¿Hay una entrada paraangular-in-memory-web-api
en supackage.json
? 3. intente matar y reiniciar la CLI de Angular:Ctrl+C
para matar;ng serve
Para reiniciar). A veces, la CLI actúa de manera extraña (lo mismo ocurre con el complemento Angular para VSCode)Esto funciona para mi:
En el conjunto de bloques de dependencias package.json (use "angular" en lugar de "angular2")
Entonces corre
O
simplemente solo corre (mi preferible)
fuente
Actualmente estoy haciendo el tutorial y tuve un problema similar. Lo que parece haberlo solucionado para mí es definir un archivo principal
'angular2-in-memory-web-api'
en lapackages
variable ensystemjs.config.js
:Antes de agregar esto, se registró un error 404
/node_modules/angular2-in-memory-web-api/
donde parecía estar intentando cargar un archivo JavaScript. Ahora se carga/node_modules/angular2-in-memory-web-api/index.js
y los demás archivos de este módulo.fuente
Esto resolvió el problema 404
De la documentación de Angular in-memory-web-api
Las importaciones de módulos deben tener InMemoryWebApiModule en la lista después de HttpModule
fuente
Desde su carpeta raíz (la carpeta contiene package.json), usando:
fuente
La solución más simple que se me ocurrió fue instalar el paquete con npm y reiniciar el servidor:
Casi instalé el paquete angular2-in-memory-web-api , pero la página npm dice:
Nota : Esta solución funcionó para un proyecto que se creó con las herramientas CLI, que no enumera el paquete como una dependencia y es posible que no resuelva el problema para los proyectos que se crearon con la semilla Quickstart, que enumera el paquete como una dependencia. .
fuente
ng serve
todavía se estaba ejecutando mientras se instalaba. Tuve que apagarlo y reiniciarlo.Estoy usando angular 4 y por debajo resolví mi problema.
fuente
Esto fue un verdadero apestoso. Gracias a @traneHead, @toni y otros, estos pasos funcionaron para mí.
angular2-in-memory-web-api
a0.0.10
systemjs.config.js
:angular2-in-memory-web-api': { main: 'core.js', defaultExtension: 'js' }
fuente
Creo mi proyecto usando angular-cli y configuro en package.json "angular-in-memory-web-api": "^ 0.2.4" en el bloque de dependencias y luego ejecuto npm install.
Trabaja para mí: D
fuente
Para los usuarios que generaron un proyecto vacío con angular cli 1.4.9 (Actual en octubre de 2017) y luego comenzaron a seguir las instrucciones paso a paso, simplemente ejecuten el siguiente comando:
Solo ese comando, sin nada adicional.
Espero que le ahorre tiempo a alguien
fuente
Si está utilizando angular cli, obtendrá este error.
Agregue
'angular2-in-memory-web-api'
elconst barrels
archivo system-config.ts como se muestra a continuación:Y agregue
'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
lo siguiente.Reconstruir usando
npm start
. Esto me resolvió el problema.fuente
Intente agregar las definiciones mecanografiadas:
... especificando el nombre de la dependencia:
Luego agregue el punto de entrada para "angular2-in-memory-web-api" en /systemjs.config.js
fuente
Tuve el mismo problema, cambié en systemjs.config:
Por esta línea:
fuente
Cambiar esta línea, como se sugirió anteriormente, funcionó para mí en el Tutorial de Angular 2 Heroes:
fuente
Lo solucioné copiando
index.js
yindex.d.ts
haciacore.js
ycore.d.ts
, es decir, dentro denode_modules/angular2-in-memory-web-api
carpeta. Ve a averiguarlo.fuente
La respuesta principal me ayudó: cambiar
a
fuente
en app \ main.ts simplemente modifica:
a:
luego agregue el parámetro index.js en
en systemjs.config.js
es trabajo para mi.
fuente
La última solución a esta fecha es
"angular-in-memory-web-api": "0.0.20"
a"angular-in-memory-web-api": "0.1.0"
y"zone.js": "^0.6.23"
a"zone.js": "^0.6.25"
'angular-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
fuente
A partir de la última versión (actualmente 0.1.14), esto es lo que se indica en el
CHANGELOG
fuente
Tengo este error porque yo estaba importando
InMemoryWebApiModule
deangular2-in-memory-web-api
que eliminado el 2. En realidad, yo tenía dos entradas en mi archivo package.json; uno fueangular2-in-memory-web-api
y el segundo fueangular-in-memory-web-api
. El uso meangular-in-memory-web-api
resolvió el problema. Entonces su importación debería ser así:Usando cli-angular no necesita cambiar nada con respecto a
system.config.js
.fuente
Para mí, simplemente hacer una instalación desde el directorio angular-tour-of-heroes funciona para mí
C: \ nodejs \ angular-tour-of-heroes> npm instalar angular-en-memoria-web-api --save
fuente
La mejor manera es instalarlo usando NPM, por ejemplo
npm instalar git + https://github.com/itryan/in-memory-web-api/ --save
agregará la referencia requerida
fuente
Encontré un problema similar. Acabo de descargar el ejemplo completo cerca del final de la parte 7 (última parte) del tutorial y lo ejecuté. Funcionó.
Por supuesto, primero debe instalar y compilar todo.
También cambié 'app-root' a 'my-app' en app.component.ts.
fuente
Si usa angular cli para construir su aplicación angular2, incluir angular2-in-memory-web-api implica tres pasos:
agregue la api al archivo system-config.ts (dentro del subdirectorio src) como se muestra a continuación:
Añadir
a la matriz vendorNpmFiles en el archivo angular-cli-build.js como ofShard mencionado;
Por supuesto, agregue al package.json como lo describe traneHead; para 2.0.0-rc.3 utilizo la siguiente versión:
Encuentro este enlace "Agregar material2 a su proyecto" explica con bastante claridad el proceso de agregar bibliotecas de terceros.
fuente
La
InMemoryDataService
clase no viene bajo ninguna API. Necesitamos crear una clase de servicio y luego importar esa clase de servicio al archivo app.module.ts.fuente
Toni, debes agregar las mecanografías para Angular2-in-memory-web-api.
Agréguelos a su archivo TS.
fuente