Eu segui o tutorial . Depois de mudar app/maint.ts
no capítulo Http, recebo o erro ao iniciar o aplicativo via linha de comando:
app / main.ts (5,51): erro TS2307: Não é possível encontrar o módulo 'angular2-in-memory-web-api'.
(Código do Visual Studio me dá o mesmo erro em main.ts - sublinhado ondulado em vermelho.)
Aqui está o meu 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);
Aqui está o meu 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' }
no arquivo systemjs.config.js (veja a resposta de @GrantTaylor).'angular2-in-memory-web-api/**/*.+(js|js.map)'
aovendorNpmFiles
array no arquivo angular-cli-build.js. Aftewards, você deve apontar seu mapa system-config assim:'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
. E, em seguida, execute novamenteng serve
(ounpm start
) para que os arquivos angular2-in-memory-web-api terminem na pasta dist / vendor.dependencies
seção:"angular-in-memory-web-api": "0.1.1"
. Eu tive que corrernpm install
da pasta do projeto depois, no entanto.Quanto aos projetos criados usando as ferramentas CLI atuais, funcionou para mim instalando
e, em seguida, realizar a importação como
fonte
npm install
comando, obtive a versão 0.3.2. Com essa versão, eu poderia apenasimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';
como descrito no tour.npm install
,import { InMemoryWebApiModule } from 'angular-in-memory-web-api'
funciona.Aqui está o que funcionou para mim:
Percebi que o package.json tinha a seguinte versão:
"angular 2 -in-memory-web-api": "0.0.20"
Observe o " 2 " no nome.
No entanto, ao fazer referência a InMemoryWebApiModule, ele estava usando 'angular-in-memory-web-api' sem o 2 no nome. Então eu adicionei e resolveu o problema:
importar {InMemoryWebApiModule} de 'angular2-in-memory-web-api';
Observação : encontrei isso na seção de avisos de https://github.com/angular/in-memory-web-api
fonte
Angular 4 Mudanças
Desde 17 de outubro de 2017, o tutorial deixa de mencionar que
angular-in-memory-web-api
não está incluído em uma compilação CLI padrão e deve ser instalado separadamente. Isso pode ser feito facilmente comnpm
:$ npm install angular-in-memory-web-api --save
Isso lida automaticamente com as alterações necessárias para
package.json
, para que você não precise fazer edições sozinho.Pontos de confusão
Este tópico é bastante confuso, pois a CLI Angular mudou significativamente desde que foi iniciado; um problema com muitas APIs em rápida evolução.
angular-in-memory-web-api
foi renomeado; diminui o 2 de angular 2 para simplesmenteangular
systemjs.config.js
não existe mais.npm
'spackage.json
não devem ser editada directamente; use a CLI.Solução
A partir de outubro de 2017, a melhor correção é simplesmente instalar você mesmo usando
npm
, como mencionei acima:$ npm install angular-in-memory-web-api --save
Boa sorte lá fora!
fonte
angular-in-memory-web-api
comnpm
? 2. Existe uma entrada paraangular-in-memory-web-api
no seupackage.json
? 3. tente matar e reiniciar o Angular CLI:Ctrl+C
para matar;ng serve
reiniciar). Às vezes, a CLI age de forma estranha (idem para o plugin Angular para VSCode)Funciona para mim:
No conjunto de blocos de dependências do package.json (use "angular" em vez de "angular2")
Então corra
OU
simplesmente execute (meu preferível)
fonte
Atualmente estou fazendo o tutorial e tive um problema semelhante. O que parece ter corrigido para mim foi definir um arquivo principal para
'angular2-in-memory-web-api'
napackages
variável emsystemjs.config.js
:Antes de adicionar isso, havia um erro 404 registrado para
/node_modules/angular2-in-memory-web-api/
onde parecia estar tentando carregar um arquivo JavaScript. Agora ele carrega/node_modules/angular2-in-memory-web-api/index.js
e os outros arquivos neste módulo.fonte
Isso resolveu o problema 404
Da documentação Angular in-memory-web-api
Importações de módulo devem ter InMemoryWebApiModule listado após HttpModule
fonte
Em sua pasta raiz (a pasta contém package.json), usando:
fonte
A solução mais simples que eu poderia pensar era instalar o pacote com npm e reiniciar o servidor:
Quase instalei o pacote angular2-in-memory-web-api , mas a página npm diz:
Nota : Esta solução funcionou para um projeto que foi criado com as ferramentas CLI, que não lista o pacote como uma dependência e pode não resolver o problema para projetos que foram criados com a semente Quickstart, que lista o pacote como uma dependência .
fonte
ng serve
ele ainda estava em execução durante a instalação. Tive que desligá-lo e reiniciá-lo.Estou usando o angular 4 e abaixo resolveu meu problema.
fonte
Este era um verdadeiro fedorento. Graças a @traneHead, @toni e outros, essas etapas funcionaram para mim.
angular2-in-memory-web-api
para0.0.10
systemjs.config.js
:angular2-in-memory-web-api': { main: 'core.js', defaultExtension: 'js' }
fonte
Eu crio meu projeto usando angular-cli e configuro no package.json "angular-in-memory-web-api": "^ 0.2.4" no bloco de dependências e, em seguida, executo o npm install.
Trabalho para mim: D
fonte
Para usuários que geraram um projeto vazio com angular cli 1.4.9 (atual em outubro de 2017) e depois começaram a seguir as instruções passo a passo, basta executar o seguinte comando:
Apenas esse comando, sem nada adicional.
Espero que economize o tempo de alguém
fonte
Se você estiver usando o CLI angular, receberá este erro.
Adicione
'angular2-in-memory-web-api'
noconst barrels
arquivo system-config.ts como abaixo:E adicione
'angular2-in-memory-web-api': 'vendor/angular2-in-memory-web-api'
como abaixo.Reconstrua usando
npm start
. Isso resolveu o problema para mim.fonte
Tente adicionar as definições de texto digitalizado:
... especificando o nome da dependência:
Em seguida, adicione o ponto de entrada para "angular2-in-memory-web-api" em /systemjs.config.js
fonte
Tive o mesmo problema, mudei no systemjs.config:
Por esta linha:
fonte
Alterar esta linha, conforme sugerido acima, funcionou para mim no Tutorial do Angular 2 Heroes:
fonte
Eu resolvi copiar
index.js
eindex.d.ts
paracore.js
ecore.d.ts
, isto é, dentronode_modules/angular2-in-memory-web-api
da pasta. Vá descobrir.fonte
A principal resposta me ajudou: mudar
para
fonte
em app \ main.ts, basta modificar:
para:
em seguida, adicione o parâmetro index.js em
em systemjs.config.js
é trabalho para mim.
fonte
A última correção nesta data é
"angular-in-memory-web-api": "0.0.20"
para"angular-in-memory-web-api": "0.1.0"
e"zone.js": "^0.6.23"
para"zone.js": "^0.6.25"
'angular-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }
fonte
A partir da última (atualmente 0.1.14), isso é o que está declarado no
CHANGELOG
fonte
Recebi este erro porque estava importando
InMemoryWebApiModule
deangular2-in-memory-web-api
removi o 2. Na verdade, eu tinha duas entradas no meu arquivo package.json; um eraangular2-in-memory-web-api
e o segundo eraangular-in-memory-web-api
. Usarangular-in-memory-web-api
resolveu o problema para mim. Portanto, sua importação deve ser assim:Usando o cli-angular, você não precisa alterar nada a respeito
system.config.js
.fonte
Para mim, apenas instalar a partir do diretório angular-tour-of-heroes funciona para mim
C: \ nodejs \ angular-tour-of-heroes> npm instalar angular-in-memory-web-api --save
fonte
A melhor maneira é instalá-lo usando NPM, por exemplo
npm install git + https://github.com/itryan/in-memory-web-api/ --save
vai adicionar a referência necessária
fonte
Eu encontrei um problema semelhante. Acabei de baixar o exemplo inteiro perto do final da parte 7 (última parte) do tutorial e executá-lo. Funcionou.
Claro, você precisa instalar e compilar tudo primeiro.
Eu também mudei 'app-root' para 'my-app' em app.component.ts.
fonte
Se estiver usando o angular cli para construir seu aplicativo angular2, incluindo o angular2-in-memory-web-api envolve três etapas:
adicione a api ao arquivo system-config.ts (dentro do subdiretório src) como abaixo:
Adicionar
ao array vendorNpmFiles no arquivo angular-cli-build.js como ofShard mencionado;
Claro, adicione ao package.json conforme descrito por traneHead; para 2.0.0-rc.3, uso a versão abaixo:
Acho que este link "Adicionando material2 ao seu projeto" explica o processo de adicionar bibliotecas de terceiros de forma bastante clara.
fonte
A
InMemoryDataService
classe não vem em nenhuma API. Precisamos criar uma classe de serviço e, em seguida, importar essa classe de serviço para o arquivo app.module.ts.fonte
Toni, você precisa adicionar as tipificações para Angular2-in-memory-web-api.
Adicione-os ao seu arquivo TS.
fonte