В HTTP-плагине не установлена ошибка с ионным
$ 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] console.warn: Родной: попытался вызвать HTTP.get, но HTTP-плагин не установлен. [20:49:03] console.warn: установите HTTP-плагин: 'ionic plugin add cordova-plugin-http'
Ответы
Ответ 1
Если вы не хотите изменять ионно-родной плагин, например, предложенный @alpere, или если решение не работает, вы всегда можете использовать плагин cordova без ионно-родной. Для этого сообщите typescript, что дескриптор http
существует, добавив следующее ниже вашего импорта:
declare var http;
И затем используйте его следующим образом:
http.get(
'https://ionic.io/',
{},
{},
response => {
console.log(response.status);
},
response => {
console.error(response.error);
},
);
Обратите внимание, что нет необходимости this
, потому что плагины cordova определены в глобальной области. Недостатком использования плагинов без ионно-родной обертки является то, что вы теряете красивые аннотации типов, обещаете обратные вызовы, и в некоторых случаях вам придется запускать обнаружение изменений angular самостоятельно.
Ответ 2
Ionic Native HTTP изменил плагин cordova, который они используют, поскольку старый не обновлялся некоторое время. Во время изменения ссылка на плагин не была обновлена, поэтому она сломалась.
(См.: https://github.com/silkimen/cordova-plugin-advanced-http/issues/8)
Вы можете исправить это, изменив старый ссылочный плагин на новый:
(После фиксации также обновление плагина исправит проблему)
в @ionic-native/plugins/http/index.ts:
изменения:
pluginRef: 'cordovaHTTP',
в
pluginRef: 'cordova.plugin.http',
См. commit:
https://github.com/ionic-team/ionic-native/commit/49ee0d85a304770a9a3bd3e04eb9609e6d565b67
Ответ 3
Это может быть вызвано любым из этих трех проблем:
- Плагин не установлен;
- Вы запустили код в браузере (или в другой ограниченной среде); или
- Платформа не готова (вы вызывали свой код перед загрузкой плагина).
Ответ 4
Пример закрепления SSL Ionic3 Cordova
https://github.com/sijovijayan/SSL-pinning-with-ionic-cordova-example
В этом примере вы получите представление о том, как реализовать закрепление SSL и как создать файл .cer.
Ответ 5
попробуйте выполнить команду ниже, как указано в сообщении об ошибке, чтобы установить HTTP plugin
ionic plugin add cordova-plugin-http
Ответ 6
Я бы переключился на Angular HTTP вместо Cordova HTTP. Преимущество: не требует никакого плагина.
package.json:
"dependencies": {
...
"@angular/http": "4.1.3",
...
}
app.module.ts:
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)
.
Ответ 7
Если вы запускаете приложение со своего компьютера, вы можете получить такую ошибку. Попробуйте использовать ionicdev
Ответ 8
Ионные родные плагины зависят от особенностей устройства. Поэтому из-за этого плагины, такие как 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
Ответ 9
У меня такая же проблема. И мне удалось избавиться от этой ошибки, просто объявив модуль Angular HTTP. В app/app.modules.ts
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
// import HttpClientModule after BrowserModule.
HttpClientModule,
],
})
Даже если я не использую Angular Module, это решило мою проблему.
Ответ 10
Вы когда-нибудь пытались вызвать плагин после того, как платформа готова, а затем проверить платформу?
async checkVersion() {
const ready = !!await this.platform.ready();
if (ready && this.platform.is('cordova')) {
// try to add your code here
}
}
Ответ 11
Основная ветвь ионного уже исправленного плагина Ref: 'cordova.plugin.http',
Проблема,
Тем не менее, если проблема не устраняется или вы не хотите изменять исходные файлы, попробуйте выполнить следующие действия, это сработало для меня.
удалить существующие сборки
rm -rf node_modules/ platforms/ plugins/ www/
обновить Ionic native до последней сборки:
npm i --save [email protected]
(пожалуйста, проверьте с другими зависимостями плагина, если это проблема, попробуйте изолировать пакеты с помощью настройки виртуальной среды - https://github.com/ekalinin/nodeenv):
добавьте все необходимые плагины и плагин http ::
ionic cordova plugin add cordova-plugin-advanced-http
Тогда, наконец, ваши плагины необходимы и плагин http
npm install @ionic-native/http
Теперь ваши сборки iOS или Android должны обнаружить все плагины