【问题标题】:NativeScript No provider for HttpNativeScript 没有 Http 提供者
【发布时间】:2017-01-05 08:41:40
【问题描述】:

我正在关注 NativeScript Groceries Typescript Angular 教程,但我在第 3 章中遇到了以下错误。

EXCEPTION: Error in ./AppComponent class AppComponent_Host - inline template:0:0
ORIGINAL EXCEPTION: No provider for Http!
ORIGINAL STACKTRACE:
Error: DI Exception
at NoProviderError.BaseException [as constructor] (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/facade/exceptions.js:27:23)
at NoProviderError.AbstractProviderError [as constructor] (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_exceptions.js:43:16)
at new NoProviderError (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_exceptions.js:80:16)
at ReflectiveInjector_._throwOrNull (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_injector.js:786:19)
at ReflectiveInjector_._getByKeyDefault (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_injector.js:814:25)
at ReflectiveInjector_._getByKey (/data/data/org.nativescript.groce

我已经来回查看教程,看看我是否遗漏了什么,但似乎我认真地遵循了每一个步骤。

我该如何解决这个问题。

【问题讨论】:

  • 您好,您是在学习 Typescript Angular 教程还是 Javascript 教程?请更新您的帖子
  • 我正在使用 Typescript Angular 教程。我已经更新了帖子。
  • 你向 Angular 的引导程序传递了什么?
  • @rrjohnson85 正在做 nativeScriptBootstrap(AppComponent, [NS_HTTP_PROVIDERS]);

标签: nativescript angular2-nativescript


【解决方案1】:

更新

如果您是因为 NativeScript Angular2 Typescript 教程而来到这里的,那么下一步将解决问题(在撰写本文时)。

原创

显然,教程中缺少一个步骤。

我必须添加以下两行:

// app.module.ts

import { NativeScriptHttpModule } from "nativescript-angular";

NativeScriptHttpModule

我以以下(app.module.ts)结束:

import { NgModule } from "@angular/core";
import { NativeScriptFormsModule } from "nativescript-angular/forms";
import { NativeScriptModule } from "nativescript-angular/platform";
import { NativeScriptHttpModule } from "nativescript-angular";

import { AppComponent } from "./app.component";

@NgModule({
  imports: [
    NativeScriptModule,
    NativeScriptFormsModule,
    NativeScriptHttpModule
  ],
  declarations: [AppComponent],
  bootstrap: [AppComponent]
})
export class AppModule { }

【讨论】:

  • 我通过从"@angular/http" 导入HttpModule 完成了或多或少相同的事情。您知道使用一种与另一种的优缺点吗?
  • 我不知道。我怀疑本机 http 模块被设置为 angular http 的提供者,所以它可能与依赖注入相同。但这只是猜测。
  • 谢谢。我不能说我理解NativeScriptHttpModule 的实现(它似乎只是一个空类),但我认为它以某种方式将NSHttp 注册为可注入的。该类会删除 URL 中的任何前导 "~""/"。关于 OP 的问题(我也遇到过),事实证明本教程在下一个练习中解决了问题(按照您推荐的方式)。我认为这是一个糟糕的教程组织案例。
  • @Ted,没错,下一步确实解释了一切,我会在答案中指出。
  • @TedHopp 是的,问题是 angular2 和 nativescript 不断发展,教程很快就过时了。例如 NS_HTTP_PROVIDERS 和它的核心对应物都被弃用了,这就是为什么现在需要加载模块的原因。将 Http 与 nativescript 一起使用也存在一些问题,因此这就是他们提供自己的实现的原因……但问题是当您在 nativescript 应用程序和常规 Web 浏览器中需要它时使其透明。
【解决方案2】:

早上好,这个错误通常是由于没有像这样在您的应用程序中引导 HTTP_PROVIDER 引起的:

 import { HTTP_PROVIDERS } from '@angular/http';

 nativeScriptBootstrap(AppComponent, [HTTP_PROVIDERS]);

【讨论】:

  • 我认为 nativescript 使用 NS_HTTP_PROVIDERS 为 Angular 的 HTTP_PROVIDERS 提供了一个包装器
  • 过去,我只是在 NativeScript 中使用来自 angular 的 HTTP_PROVIDERS 成功。您可能想尝试一下,看看它是否能解决您的错误。编辑:在示例杂货应用程序 TJ 使用 NS_HTTP_PROVIDERS github.com/NativeScript/sample-Groceries/tree/angular-end/app
  • @ammezie NS_HTTP_PROVIDERS 扩展了 @angular/http 的 Http,此外它还允许直接使用 Http 服务从应用程序包中获取资源。见github.com/NativeScript/nativescript-angular/wiki/Http
  • 我正在使用 NS_HTTP_PROVIDERS 但仍然出现这些错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2016-12-18
  • 2018-05-09
  • 2016-06-13
  • 2018-02-10
  • 2016-02-16
  • 2017-02-14
相关资源
最近更新 更多