ionic-native/http 发出错误“NullInjectorError: No provider for HTTP!”
Posted
技术标签:
【中文标题】ionic-native/http 发出错误“NullInjectorError: No provider for HTTP!”【英文标题】:ionic-native/http emit error “NullInjectorError: No provider for HTTP!” 【发布时间】:2018-08-27 12:51:41 【问题描述】:我正在使用 ionic 3.2 和 angular,用于安装 HTTP
(https://ionicframework.com/docs/native/http/) 我使用以下命令:
ionic cordova plugin add cordova-plugin-advanced-http
npm install --save @ionic-native/http
在脚本autenticar.ts
中我添加了import HTTP from '@ionic-native/http';
,如下所示:
import Component, ViewChild from '@angular/core';
import NavController from 'ionic-angular';
import HTTP from '@ionic-native/http';
@Component(
selector: 'page-autenticar',
templateUrl: 'autenticar.html'
)
export class AutenticarPage
@ViewChild('username') username;
@ViewChild('password') password;
constructor(public navCtrl: NavController, public http: HTTP)
console.log(http)
...
重新加载应用后出现此错误:
Runtime Error Uncaught (in promise): Error: StaticInjectorError(AppModule) [AutenticarPage -> HTTP]: StaticInjectorError(Platform: core)[AutenticarPage -> HTTP]: NullInjectorError: No provider for HTTP! Error: StaticInjectorError(AppModule)[AutenticarPage -> HTTP]: StaticInjectorError(Platform: core)[AutenticarPage -> HTTP]: NullInjectorError: No provider for HTTP! at _NullInjector.get (http://localhost:8100/build/vendor.js:1376:19) at resolveToken (http://localhost:8100/build/vendor.js:1674:24) at tryResolveToken (http://localhost:8100/build/vendor.js:1616:16) at StaticInjector.get (http://localhost:8100/build/vendor.js:1484:20) at resolveToken (http://localhost:8100/build/vendor.js:1674:24) at tryResolveToken (http://localhost:8100/build/vendor.js:1616:16) at StaticInjector.get (http://localhost:8100/build/vendor.js:1484:20) at resolveNgModuleDep (http://localhost:8100/build/vendor.js:11228:25) at NgModuleRef_.get (http://localhost:8100/build/vendor.js:12461:16) at resolveDep (http://localhost:8100/build/vendor.js:12951:45)
我试试这个answer,说我必须添加app.module.ts
这个import HttpModule from '@angular/http';
,像这样:
import NgModule, ErrorHandler from '@angular/core';
import BrowserModule from '@angular/platform-browser';
import IonicApp, IonicModule, IonicErrorHandler from 'ionic-angular';
import HttpModule from '@angular/http';
import MyApp from './app.component';
....
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp)
],
...
但还是同样的错误。
【问题讨论】:
我认为您需要在 app.module.ts 中的提供程序中添加HTTP
【参考方案1】:
你需要在providers中添加HTTP
app.module.ts
...
import HTTP from '@ionic-native/http';
...
@NgModule(
...
providers: [
...
HTTP
...
]
...
)
export class AppModule
【讨论】:
它看起来像它工作,但它看起来 HTTP 在浏览器中不起作用,只是在设备上。这是正确的吗? 是的,一些离子原生模块只能在设备上工作,而不是在浏览器上工作。 如果您还想在浏览器和设备上工作,那么您需要使用@angular/http
而不是通过cordova。
感谢您的解释! +1 :)
我通常会创建一个辅助类,它同时使用原生 HTTP 和 Angular HTTP。当检测到的平台是 Cordova 时,帮助程序类使用本机 HTTP 模块。如果不是,则相应地使用 Angular HTTP。【参考方案2】:
providers
providers: [
HTTP
]
【讨论】:
所以documentation 不正确?我试过你的建议,但我得到另一个错误:Can't resolve all parameters for AutenticarPage: ([object Object], ?).
- 截图:i.stack.imgur.com/TSn24.png
它看起来像它工作,但它看起来 HTTP 在浏览器中不起作用,只是在设备上。这是正确的吗?
谢谢 1+ :) - 注意:我接受了另一个答案,因为他先回答了。以上是关于ionic-native/http 发出错误“NullInjectorError: No provider for HTTP!”的主要内容,如果未能解决你的问题,请参考以下文章
可视代码 - 错误 NU1101:找不到包 Microsoft.EntityFrameworkCore
Visual Studio Autodeploy - nuget命令失败,退出代码和错误NU1102
构建错误 NU1202 Xamarin.Android.Support.XXXX 与 monoandroid51 不兼容
错误NU1101:无法找到软件包”。源中不存在具有此ID的软件包:Microsoft Visual Studio脱机软件包,nuget.org