Неподготовлено (в обещании): cordova_not_available в Ionic 2
Когда я запускаю ионное приложение с ionic serve -l
, получаю эту ошибку:
Ошибка выполнения
Uncaught (в обещании): cordova_not_available
стек
Error: Uncaught (in promise): cordova_not_available
at v (http://localhost:8100/build/polyfills.js:3:4864)
at s (http://localhost:8100/build/polyfills.js:3:4289)
at s (http://localhost:8100/build/polyfills.js:3:4112)
at http://localhost:8100/build/polyfills.js:3:4652
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10284)
at Object.onInvokeTask (http://localhost:8100/build/main.js:38692:37)
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10220)
at e.runTask (http://localhost:8100/build/polyfills.js:3:7637)
at i (http://localhost:8100/build/polyfills.js:3:3707)
at HTMLDocument.invoke (http://localhost:8100/build/polyfills.js:3:11437)
другие детали
Ionic Framework: 2.2.0
Ionic Native: 2.8.1
Ionic App Scripts: 1.1.4
Angular Core: 2.4.8
Angular Compiler CLI: 2.4.8
Node: 6.9.2
OS Platform: Windows 10
Navigator Platform: Win32
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Я устанавливаю плагин HotSpot, используя следующую команду:
ionic plugin add cordova-plugin-hotspot --save
cordova plugin add cordova-plugin-hotspot --save
Использование app.component.ts
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen,Hotspot,Network } from 'ionic-native';
import { TabsPage } from '../pages/tabs/tabs';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage = TabsPage;
constructor(platform: Platform) {
platform.ready().then(() => {
StatusBar.styleDefault();
Splashscreen.hide();
Hotspot.scanWifi().then((networks: Array<Network>) => {
console.log(networks);
});
})
}
}
Кроме того, я вижу другие вопросы, но не решаю свою проблему.
Ответы
Ответ 1
Вы получаете доступ к собственным плагинам во время тестирования в браузере. Чтобы плагины работали, вы должны использовать реальное устройство для тестирования.
Чтобы сделать ваш код тестируемым в браузере (или вообще не ломаться при тестировании в браузере), вы должны проверить оператор if, доступен ли Cordova:
if (this.platform.is('cordova')) {
// You're on a device, call the native plugins. Example:
//
// var url: string = '';
//
// Camera.getPicture().then((fileUri) => url = fileUri);
} else {
// You're testing in browser, do nothing or mock the plugins' behaviour.
//
// var url: string = 'assets/mock-images/image.jpg';
}
РЕДАКТИРОВАТЬ:
Как правильно здесь заметил Рики Леви, Ionic поддерживает платформу browser
. Используя эту платформу, большинство распространенных плагинов могут работать. Обратите внимание, что некоторые плагины не будут, например плагин сканер штрих-кода. Так же он выдаст вам предупреждение, запрашивая значение, которое необходимо scanned
. Который потеряет весь сценарий использования сканера штрих-кода.
Ответ 2
Возможно, с тех пор что-то изменилось, но Ionic теперь поддерживает "браузер" как платформу (просто просматривает), что делает плагины Cordova доступными в браузере.
Чтобы использовать его, вы добавляете платформу ionic cordova platform add browser
И затем вы запускаете ionic cordova run browser
ionic serve
(ionic run browser
- точно так же, как ionic cordova run android
или ionic cordova run ios
)
Ответ 3
Кордова доступна только при запуске приложения на реальном устройстве. Когда вы тестируете свое приложение в браузере, он не может получить доступ к этим родным плагинам.
Вы можете проверить, находитесь ли вы на реальном устройстве или в браузере:
if (this.platform.is('cordova')) {
// You are on a device, cordova plugins are accessible
} else {
// Cordova not accessible, add mock data if necessary
}
Это поможет вам протестировать части вашего приложения, которые не полагаются на плагины cordova. Чтобы действительно протестировать ваше приложение, вам нужно запустить его на устройстве или в эмуляторе.
Ответ 4
Запуск приложения в браузере
1.Проверьте платформу
# import {Platform} from 'ionic-angular';
# constructor(public platform:Platform) {
if (this.platform.is('core')) {
this.myPlatform = "Browser";
console.log('I am on a web browser')
} else {
this.mobileDevice = "True"
}
}
Используйте эти проверки в своих методах, где вы реализуете зависимости Кордовы.
Ответ 5
Загрузите приложение Ionic View, а затем запустите команду ionic upload.
После этого вы сможете просмотреть приложение на своем телефоне, а собственные функции будут работать.
Ответ 6
эта ошибка возникает при попытке доступа к мобильным функциям на немобильном устройстве, например, если вы хотите получить доступ к мобильному GPS, вам нужна кордова, это цепочка ссылок между кодом javascript и целевой платформой
самое лучшее, что нужно сделать, это проверить среду, в которой вы работаете, если ее кордова, чтобы вы не попали в кордову, а не ошибку фонда
if (this.platform.is('cordova')) {
// You're on a mobile device "IOS ANDROID WINDOWS"
// now you can call your native plugins
} else {
// You're testing in a browser so you may want to use another method or run your code on a emulator
}
Ответ 7
Использование имитатора cordova помогает предотвратить Error: Uncaught (in promise): cordova_not_available
.
- установить cordova simulator
npm install -g cordova-simulate
- Запустите cordova simulator
:
-
В командной строке в любом месте проекта Cordova
введите следующее:
simulate [platform] [--target=browser]
-
platform
- это любая Cordova platform
, добавленная в ваш проект. По умолчанию браузер.
-
browser
- это имя браузера, в котором запускается ваше приложение. Может быть любым из следующих: default
, chrome
, chromium
, edge
, firefox
, ie
opera
, safari
.
Пример:
simulate android --target=chrome
Приведенная выше команда откроет 2 вкладки в chrome browser
со следующими URL и портами:
- HTTP://локальный: 8000/Симулятор/index.html
- HTTP://локальный: 8000/index.html
Вы можете использовать вкладку симулятора для изменения и моделирования условий устройства, таких как координаты GPS, тип интернет-соединения, ориентация устройства и т.д., А также можете использовать другую вкладку для тестирования приложения.
Ответ 8
Я новичок в ионике. Я создал свой проект как WorkApp, и ниже приведены мои детали кода. Ионная информация
Получаю следующую ошибку. введите описание изображения здесь