HTTP plugin не установлен ошибка с ionic

$ ionic cordova plugin add cordova-plugin-http
$ npm install --save @ionic-native/http

реализация:

  constructor(private https: HTTP ) {
  }

  this.https.get('http://ionic.io', {}, {})
  .then(data => {
   this.httpData =data;
   console.log(data.status);
   })
   .catch(error => {

     console.log(error.status);

     });

и я получаю эту ошибку:

[20:консоль 49:03] .warn: Native: пытался вызвать HTTP.get, но плагин HTTP не установлен. [20:49:03] консоль.предупреждаю: установите плагин для HTTP: 'ионные плагин добавить Кордова-плагин от HTTP'

9 ответов


если вы не хотите изменять плагин Ionic-native, как предложено @alpere, или если решение не работает, вы всегда можете использовать плагин cordova без Ionic-native. Для этого скажите typescript, что http дескриптор существует, добавив следующее Где-то ниже вашего импорта:

declare var http;

а затем используйте его так:

http.get(
  'https://ionic.io/',
  {},
  {},
  response => {
    console.log(response.status);
  },
  response => {
    console.error(response.error);
  },
);

обратите внимание, что нет необходимости this потому что плагины cordova определены в глобальной области. Недостаток использования плагинов без ионной-родной обертки вы теряете хорошие аннотации типа, обещаете обратные вызовы, а в некоторых случаях вам придется запускать угловое обнаружение изменений самостоятельно.


Ionic Native HTTP изменил плагин cordova, который они используют, так как старый не обновлялся некоторое время. Во время изменения ссылка на плагин не была обновлена, поэтому она сломана. (См.: https://github.com/silkimen/cordova-plugin-advanced-http/issues/8)

вы можете исправить это, изменив старый ссылочный плагин на новый: (После фиксации также обновление плагина исправит проблему)

in @ionic-native / plugins / http / index.ТС:

изменения:

pluginRef: 'cordovaHTTP',

в:

pluginRef: 'cordova.plugin.http',

фиксации: https://github.com/ionic-team/ionic-native/commit/49ee0d85a304770a9a3bd3e04eb9609e6d565b67


попробуйте выполнить команду ниже, как предложено в сообщении об ошибке для установки HTTP plugin

ionic plugin add cordova-plugin-http

Я бы переключился на HTTP Angular вместо HTTP Cordova. Преимущество: не требует никакого плагина.

пакета.в JSON:

   "dependencies": {
        ...
        "@angular/http": "4.1.3",
        ...
   }

app.модуль.ТС:

import { Http, HttpModule } from '@angular/http';

...

@NgModule({
  declarations: [
    MyApp,
  ],
  imports: [
    ...
    HttpModule,
    ...
  ]...

призвание .ts-class:

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

...

constructor(... , public http: Http, ...) {
    //Example: .get for a JSON and map it:
    this.http.get(url).map(res => res.json()).subscribe(data => {
        this.data = data;
    });
}

ответ на первый комментарий:

поскольку вам, похоже, нужно закрепление SSL, и я еще не нашел простой способ в Angular HTTP, я увидел, что ваша команда добавления cordova плагин немного отличается от того, что есть в документации:

вы писали:

ionic cordova plugin add cordova-plugin-http

теперь команда кажется:

ionic cordova plugin add cordova-plugin-advanced-http

(https://ionicframework.com/docs/native/http/)

как вы можете видеть, он поддерживает ваши потребности с помощью таких методов, как enableSSLPinning(enable).


Это может быть вызвано любым из этих трех вопросов:

  1. плагин не установлен;
  2. вы запустили код в браузере (или другой среды общества); или
  3. платформа не готова (вы вызвали свой код до загрузки плагина).

пример закрепления SSL Cordova Ionic3

https://github.com/sijovijayan/SSL-pinning-with-ionic-cordova-example

в этом примере вы получите представление о том, как реализовать закрепление SSL и как генерировать .файла CER


Если вы используете приложение с вашего ПК, вы можете получить такую ошибку. Попробуйте использовать ionicdev


ионные собственные плагины зависят от функций устройства. Поэтому из-за этого плагины, такие как http, контакты или камера не будут работать в вашем браузере. Примером такой ошибки является

Native: tried calling HTTP.post, but Cordova is not available. Make sure to include cordova.js or run in a device/simulator

поэтому постарайтесь сделать приложение ионные для развития приложения https://play.google.com/store/apps/details?id=io.ionic.devapp


У меня была та же проблема. И мне удалось избавиться от этой ошибки, просто объявив HTTP-модуль Angular. В приложении / app.модули.ТС

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

@NgModule({
  imports: [
    // import HttpClientModule after BrowserModule.
    HttpClientModule,
  ],
})

даже если я не использую модуль Angular, это решило мою проблему.