Подтвердить что ты не робот

Ионный 2: Кордова недоступна. Обязательно включите cordova.js или запустите в устройстве/симуляторе (работает в эмуляторе)

Я только что установил свой первый ионный 2 приложение (я использовал ионный 1 довольно широко). Я пытаюсь использовать плагин предварительного просмотра ionic-native camera.

Настройка была довольно простой:

npm install -g ionic cordova
ionic start timesnap --v2
ionic platform add android
ionic platform add ios
ionic plugin add cordova-plugin-camera-preview --save

Затем я скопировал и вставил код примера на страницу about:

import { CameraPreview, CameraPreviewRect } from 'ionic-native';

// camera options (Size and location)
let cameraRect: CameraPreviewRect = {
  x: 100,
  y: 100,
  width: 200,
  height: 200
};


// start camera
CameraPreview.startCamera(
  cameraRect, // position and size of preview
  'front', // default camera
  true, // tap to take picture
  false, // disable drag
  true, // send the preview to the back of the screen so we can addoverlaying elements
  1 //alpha
);

Я запустил приложение, используя следующие команды:

ionic emulate android -lcs

ionic emulate ios -lcs --target='iPhone-6'

Сначала камера просто не появлялась, я побежал chrome://inspect и увидел предупреждения о том, что Кордова отсутствует "попробуйте запустить эмулятор", но это было во время работы в эмуляторе Android. Я тоже пробовал iOS и видел те же результаты.

Любые идеи, почему кордова не загружается?

Вот полный журнал ошибок из chrome://inspect во время работы в эмуляторе Android:

введите описание изображения здесь

Обновить... index.html

(он просто стандартный, создаваемый ионным)

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
  <meta charset="UTF-8">
  <title>Ionic App</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <meta name="format-detection" content="telephone=no">
  <meta name="msapplication-tap-highlight" content="no">

  <link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
  <link rel="manifest" href="manifest.json">
  <meta name="theme-color" content="#4e8ef7">

  <!-- cordova.js required for cordova apps -->
  <script src="cordova.js"></script>

  <!-- un-comment this code to enable service worker
  <script>
    if ('serviceWorker' in navigator) {
      navigator.serviceWorker.register('service-worker.js')
        .then(() => console.log('service worker installed'))
        .catch(err => console.log('Error', err));
    }
  </script>-->

  <link href="build/main.css" rel="stylesheet">

</head>
<body>

  <!-- Ionic root component and where the app will load -->
  <ion-app class="trans"></ion-app>

  <!-- The polyfills js is generated during the build process -->
  <script src="build/polyfills.js"></script>

  <!-- The bundle js is generated during the build process -->
  <script src="build/main.js"></script>

</body>
</html>
4b9b3361

Ответ 1

Плагин livereload не может служить файлу cordova.js и служит //mock file cordova во время разработки.

ИСПРАВЛЕНИЕ: вам нужно перейти на node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js

и замените

exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'assets', 'www');

to

exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'app', 'src', 'main', 'assets', 'www');

Ответ 2

Это довольно поздно, но любой, кто сталкивается с той же проблемой, может извлечь выгоду из этого ответа. Сначала попробуйте добавить браузер, выполнив команду ниже ionic platform add browser, а затем запустите команду ionic run browser.

, что является разницей между ionic serve and ionic run browser?

Ионная подача - запускает ваше приложение как веб-сайт (это означает, что он не имеет Кордова). Ионный браузер запуска - запускает ваше приложение в Кордове платформу браузера, которая будет вводить cordova.js и любые плагины, которые иметь возможности браузера

Вы можете сослаться на эту ссылку, чтобы узнать больше разницы между ionic serve и ionic run browser командой

Обновление

Из Ionic 3 эта команда была изменена. Вместо этого используйте команду ниже:

ionic cordova platform add browser

ionic cordova run browser

Вы можете узнать, какую версию ионной вы используете, запустив: ionic --version

Ответ 3

Возможно, вы пропустили шаг. Вы строили для платформы до эмуляции?

ionic cordova build android
ionic cordova build ios

Ответ 4

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { EmailComposer } from '@ionic-native/email-composer';

@Component({
  selector: 'page-about',
  templateUrl: 'about.html'
})
export class AboutPage {
  sendObj = {
    to: '',
    cc: '',
    bcc: '',
    attachments:'',
    subject:'',
    body:''
  }

  constructor(public navCtrl: NavController,private emailComposer: EmailComposer) {}

  sendEmail(){
  let email = {
    to: this.sendObj.to,
    cc: this.sendObj.cc,
    bcc: this.sendObj.bcc,
    attachments: [this.sendObj.attachments],
    subject: this.sendObj.subject,
    body: this.sendObj.body,
    isHtml: true
  }; 
  this.emailComposer.open(email);
  }  
 }

starts here html about

<ion-header>
  <ion-navbar>
    <ion-title>
      Send Invoice
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <ion-item>
    <ion-label stacked>To</ion-label>
    <ion-input [(ngModel)]="sendObj.to"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>CC</ion-label>
    <ion-input [(ngModel)]="sendObj.cc"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>BCC</ion-label>
    <ion-input [(ngModel)]="sendObj.bcc"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>Add pdf</ion-label>
    <ion-input [(ngModel)]="sendObj.attachments" type="file"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>Subject</ion-label>
    <ion-input [(ngModel)]="sendObj.subject"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>Text message</ion-label>
    <ion-input [(ngModel)]="sendObj.body"></ion-input>
  </ion-item>

  <button ion-button full (click)="sendEmail()">Send Email</button>

</ion-content>


other stuff here

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';

import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { HomePage } from '../pages/home/home';
import { TabsPage } from '../pages/tabs/tabs';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { File } from '@ionic-native/file';
import { FileOpener } from '@ionic-native/file-opener';
import { EmailComposer } from '@ionic-native/email-composer';

@NgModule({
  declarations: [
    MyApp,
    AboutPage,
    ContactPage,
    HomePage,
    TabsPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    AboutPage,
    ContactPage,
    HomePage,
    TabsPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    EmailComposer,
    {provide: ErrorHandler, useClass: IonicErrorHandler},  
    File,
    FileOpener
  ]
})
export class AppModule {}

Ответ 5

У меня тоже была такая же проблема.

Я строю .apk файл проекта и установил его на мобильный (Android) и получил его работать

Ответ 6

Если кто-то снова сталкивается с этой проблемой, то принятое решение сработало для более старых версий ионных и прикладных скриптов, я использовал его много раз в прошлом, но на прошлой неделе, после того, как я обновил некоторые вещи, он снова сломался, и это Исправление больше не работало, так как это уже было решено в текущей версии app-скриптов, большая часть информации приведена в этом посте https://forum.ionicframework.com/t/ionic-cordova-run-android-livereload -cordova-not-available/116790/18, но здесь я кратко расскажу:

Сначала убедитесь, что у вас есть эти версии в вашей системе

пакеты cli: (xxxx\npm\node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0

глобальные пакеты:

cordova (Cordova CLI) : not installed

локальные пакеты:

@ionic/app-scripts : 3.1.9
Cordova Platforms  : android 7.0.0
Ionic Framework    : ionic-angular 3.9.2

система:

Node : v10.1.0
npm  : 5.6.0

Это на вашем package.json

"@angular/cli": "^ 6.0.3", "@ionic/app-scripts": "^ 3.1.9", "typcript": "~ 2.4.2"

Теперь удалите вашу платформу с помощью ionic cordova platform rm what-ever Затем УДАЛИТЕ папку node_modules и плагины и УБЕДИТЕСЬ, что платформа была удалена из папки платформы.

Наконец, беги

npm установить ионную платформу Cordova добавить все, что Ион Cordova запустить

И все должно работать снова

Ответ 7

проверьте в вашем src/index.html, если у вас есть

<script src="cordova.js"></script>