没有使用 Angular 2 和 Http 服务的 XHRBackend 提供程序

2024-05-22

我正在构建一个基于 angular2 (生成 angularcli )、webpack、scss 和面向模块的项目。

对于 http 请求,我决定创建一个由身份验证服务使用的服务。

全部在 CoreModule 中引用

import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {RequestOptions, XHRBackend} from '@angular/http';

// Services
import {HttpService} from './services/http.service';
import {AuthService} from './services/auth/auth.service';

export function httpInterceptor(backend: XHRBackend,
                                defaultOptions: RequestOptions) {
  return new HttpService(backend, defaultOptions);
}


@NgModule({
  imports: [
    CommonModule
  ],
  providers: [
    AuthService,
    {
      provide: HttpService,
      useFactory: httpInterceptor,
      deps: [XHRBackend, RequestOptions]
    }
  ]
})
export class CoreModule {
}

还有我的应用程序模块:

import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {Router} from '@angular/router';

import 'materialize-css';

// Components
import {AppComponent} from './app.component';

// Modules
import {MaterializeModule} from 'angular2-materialize';
import {AppRoutingModule} from './app-routing.module';
import {CoreModule} from './core/core.module';
import {AuthModule} from './auth/auth.module';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    MaterializeModule,
    CoreModule,
    AuthModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
  constructor(router: Router) {
    console.log('Routes: ', JSON.stringify(router.config, undefined, 2));
  }
}

这是完整的问题:

ERROR Error: Uncaught (in promise): Error: No provider for XHRBackend!
Error: No provider for XHRBackend!
    at injectionError (core.es5.js:1169)
    at noProviderError (core.es5.js:1207)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._throwOrNull (core.es5.js:2649)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKeyDefault (core.es5.js:2688)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKey (core.es5.js:2620)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_.get (core.es5.js:2489)
    at resolveNgModuleDep (core.es5.js:9562)
    at _callFactory (core.es5.js:9637)
    at _createProviderInstance$1 (core.es5.js:9576)
    at resolveNgModuleDep (core.es5.js:9558)
    at injectionError (core.es5.js:1169)
    at noProviderError (core.es5.js:1207)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._throwOrNull (core.es5.js:2649)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKeyDefault (core.es5.js:2688)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKey (core.es5.js:2620)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_.get (core.es5.js:2489)
    at resolveNgModuleDep (core.es5.js:9562)
    at _callFactory (core.es5.js:9637)
    at _createProviderInstance$1 (core.es5.js:9576)
    at resolveNgModuleDep (core.es5.js:9558)
    at resolvePromise (zone.js:770)
    at resolvePromise (zone.js:741)
    at zone.js:818
    at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
    at Object.onInvokeTask (core.es5.js:3924)
    at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:191)
    at drainMicroTaskQueue (zone.js:584)
    at <anonymous>
defaultErrorLogger @ core.es5.js:1020
webpackJsonp.../../../core/@angular/core.es5.js.ErrorHandler.handleError @ core.es5.js:1080
next @ core.es5.js:4562
schedulerFn @ core.es5.js:3635
webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:238
webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.next @ Subscriber.js:185
webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber._next @ Subscriber.js:125
webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next @ Subscriber.js:89
webpackJsonp.../../../../rxjs/Subject.js.Subject.next @ Subject.js:55
webpackJsonp.../../../core/@angular/core.es5.js.EventEmitter.emit @ core.es5.js:3621
webpackJsonp.../../../core/@angular/core.es5.js.NgZone.triggerError @ core.es5.js:3993
onHandleError @ core.es5.js:3954
webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:395
webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runGuarded @ zone.js:157
_loop_1 @ zone.js:653
api.microtaskDrainDone @ zone.js:662
drainMicroTaskQueue @ zone.js:592

您需要导入HttpModule在你的模块中。后者提供的 HTTP 提供程序包括XHRBackend。另外,如果要实现HTTP请求的拦截,则需要使用Http注册拦截器实现时的类型(Http).

这是一个示例:

imports: [
  (...)
  HttpModule, // <-------------
  (...)
],
providers: [
  {
    provide: Http, // <-------------
    useFactory: httpInterceptor,
    deps: [ XHRBackend, RequestOptions, Store, Injector ]
  }
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有使用 Angular 2 和 Http 服务的 XHRBackend 提供程序 的相关文章

随机推荐

  • 如何检测应用程序是否在越狱设备上运行? [复制]

    这个问题在这里已经有答案了 我刚刚发布了适用于 iOS 的应用程序 但我不确定如何确保我的应用程序不被越狱者使用 我可以采取措施阻止我的应用程序在越狱设备上运行吗 您可以通过代码检测应用程序是否在越狱设备上运行 通过这种方式 您可以弹出警报
  • 如何在 pylab/pyplot 中裁剪极坐标图

    我有一个极坐标图 其中theta从 0 到 pi 2 变化 所以整个情节都在第一季度 如下所示 pylab inline X linspace 0 pi 2 polar X cos 6 X 2 source schurov com http
  • django:使用内部变量进行翻译

    我有以下代码 from django utils translation import ugettext as task You have s friends c1 task This is translation compositions
  • 如何将哈希表添加到多维数组?无法通过成员访问枚举分配值

    我在将哈希表添加到多维数组时遇到问题 我编码如下 Data BIBs BIB BIBName BIBName Standort Standort B cher BuchName BuchName Autor Autor 此代码正在运行并创建
  • Magento 从 Observer 重定向始终有效

    我无法从观察者在 Magento 中创建工作重定向 据我所知 有很多事件都获得了响应对象 在 observer目的 另一种方法是使用类似的东西 Mage app gt getResponse gt setRedirect Mage getU
  • pouchdb 从 couchdb 复制:非常慢

    我的 couchDB 中有一个约 10k 条目 约 30Mo 无附件 数据库 使用 Pouchdb 浏览器端 从沙发复制时 确实需要一段时间才能完成 令我惊讶的是我的沙发在此期间收到的请求数量 数千 我猜和文件一样多 这正常吗 有没有办法
  • 获取低阶 N 位

    有什么方法可以获得任何整数的低阶n位 其中n可以是 1 到 32 之间的任意数字 无需预先计算 32 个位掩码 每个订单一个 并使用 操作员 我也不想使用 具有 2 的幂 只是按位运算 Edit 例如 假设用户输入一个整数Num和另一个整数
  • 使用谷歌云数据流PubSubIO,消息的读取何时得到确认?

    是否可以延迟确认 直到成功处理子图 PubSubIO Read 下面的所有内容 例如 我们是流媒体从 google pubsub 订阅中读取数据 然后将文件写入 GCS 在另一个分支中 我们使用 BigQueryIO Write 写入 Bi
  • 当聚焦非 UILabel titleView 时,VoiceOver 会读取辅助功能标签两次

    我在使用 VoiceOver 时遇到了一个奇怪的问题 Goals Set a UIStackView含有多个UILabel就如我的navigationItem titleView 将堆栈视图标记为辅助功能元素并设置其accessibilit
  • setInterval 按分钟 按分钟

    对于 JavaScript 爱好者来说 你会如何编程setTimeOut or setInterval 处理按分钟触发 例如 如果是当前时间的 51 秒 则在 9 秒后触发 如果是第 14 秒 则在 46 秒后触发 thanks var d
  • 如何根据 Sails.js 中的请求参数为模型选择不同的数据库?

    我正在考虑将一个应用程序移植到 Sails JS 我遇到的大问题之一是支持我们现在的每个请求数据库选择 我们的应用程序为我们拥有的每个客户创建 使用不同的数据库 并且我们根据请求选择数据库 我如何在 Sails JS 中实现这一目标 我可以
  • 循环浏览文件夹中的工作簿

    我正在尝试从文件夹中的所有工作簿复制某些单元格 下面的代码仅循环遍历第一个文件 VBA 新手 欢迎任何帮助 提前致谢 Sub Get Data Dim Directory As String Dim Filename As String D
  • 无法让基本的 pjax 示例工作

    编辑 非 工作示例在这里 http www jogos mmorpg com pjax html http www jogos mmorpg com pjax html 我正在尝试重现一个非常基本的 PJAX 示例 如自述文件中所述 htt
  • 使用maven2构建基于autotools的C/C++包

    我正在开发一个 MATLAB Java 和 C C 组件集合 这些组件都可以互操作 但具有明显不同的编译 安装步骤 我们目前不为 MATLAB 编译任何内容 使用 maven2 进行 Java 构建和单元测试 并使用 autotools 进
  • 在 iOS4 中视图控制器即将弹出时收到通知

    这个问题以前有人问过 但我能找到的答案是 2009 年的 不适合我的问题 让我重申一下这个问题 我有一个UINavigationController产生并推动许多不同的UIViewControllers 入栈 其中之一涉及一些核心数据操作
  • 组对象数组下划线js

    我从 URL 中返回一个数组 如下所示 id 1 product id 101 price new 80 price old 90 id 2 product id 101 price new 80 price old 90 id 3 pro
  • Cucumber + Java + Spring Boot = 从 jar 运行时没有后端错误

    如同这个旧帖子 https stackoverflow com questions 44069165 cucumber no backend found when running from spring boot jar我有一个使用 Spr
  • Jenkins 工作流程检查作业是否正在运行或已计划

    是否可以检查某些作业是否正在运行或从某些工作流程脚本中安排 尽管使用阶段管理并发似乎就足够了 stage name stageName concurrency 1 并在这些阶段运行构建 如下所示 build job test job wai
  • 将 ThreadLocal 与 ExecutorService 一起使用是否危险?

    我在下面的博客上介绍了 ThreadLocals 的概念 https www baeldung com java threadlocal https www baeldung com java threadlocal 它说 不要将 Thre
  • 没有使用 Angular 2 和 Http 服务的 XHRBackend 提供程序

    我正在构建一个基于 angular2 生成 angularcli webpack scss 和面向模块的项目 对于 http 请求 我决定创建一个由身份验证服务使用的服务 全部在 CoreModule 中引用 import NgModule