英雄之旅中 HttpClientInMemoryWebAPI 的问题

Problem with HttpClientInMemoryWebAPI in Tour of Heroes

自从 Angular 中断 4 个月后,我又开始学习英雄之旅教程了。在我点击 http 部分之前,一切都很顺利。特别是 the HttpClientInMemoryAPI section. From what I've found searching it sounds like its a compatibility issue. I found as well as this one 并尝试恢复到版本 0.5.4。我还尝试删除 node_modules 目录并进行 npm 安装(我确实确保 InMemAPI 的版本在 运行 安装之前保持在 0.5.4)。我发现的大多数其他文章都是针对 Angular 2 的,因此我没有花太多时间尝试这些文章。我目前收到的错误是:

ERROR in node_modules/angular-in-memory-web-api/http-backend.service.d.ts(2,75): error TS2307: Cannot find module '@angular/http'. node_modules/angular-in-memory-web-api/http-backend.service.d.ts(3,10): error TS2305: Module '"C:/Development/Working/tour-of-heroes/node_modules/rxjs/Observable"' has no exported member 'Observable'. node_modules/angular-in-memory-web-api/http-client-backend.service.d.ts(2,10): error TS2305: Module '"C:/Development/Working/tour-of-heroes/node_modules/rxjs/Observable"' has no exported member 'Observable'. node_modules/angular-in-memory-web-api/http-in-memory-web-api.module.d.ts(2,28): error TS2307: Cannot find module '@angular/http'. node_modules/angular-in-memory-web-api/interfaces.d.ts(1,10): error TS2305: Module '"C:/Development/Working/tour-of-heroes/node_modules/rxjs/Observable"' has no exported member 'Observable'. node_modules/rxjs/Observable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/Observable'.

我希望我已经做了足够的研究,不会因为问这个问题而被激怒,如果没有,请至少给我指出一个好的 url 因为我上面发布的 2 篇文章似乎是最相关和最近.

谢谢大家,非常感谢您的帮助!

如果可能的话,我不建议使用旧版本的库。您的目标是 Angular 的旧版本吗?

InMemoryWebAPI 的当前版本面向 Angular v7,因此如果您使用的是 Angular v7,则应使用当前版本的 InMemoryWebAPI (v0.7)

确认您的 package.json 确实 包含 @angular/http。此 应该 在创建您的应用程序时添加。我的 package.json 看起来像这样:

  "dependencies": {
    "@angular/animations": "~7.0.0",
    "@angular/common": "~7.0.0",
    "@angular/compiler": "~7.0.0",
    "@angular/core": "~7.0.0",
    "@angular/forms": "~7.0.0",
    "@angular/http": "~7.0.0",         // <-- This should be here already
    "@angular/platform-browser": "~7.0.0",
    "@angular/platform-browser-dynamic": "~7.0.0",
    "@angular/router": "~7.0.0",
    // ...

所以即使我们现在在代码中使用 HttpClientModule

import { HttpClientModule } from '@angular/common/http';

我们仍然在 package.json 文件中引入 @angular/http。 (如果您使用 Angular CLI,它应该已经为您准备好了。)