55 votes

Ionique 2: Cordova n'est pas disponible. Assurez-vous d'inclure cordova.js ou d'exécuter dans un dispositif/simulateur de course dans l'émulateur)

Je viens de créer mon premier ionique 2 app (j'ai utilisé ionique 1 assez largement). Je suis en train d'utiliser l' ionique-natif de la caméra de prévisualisation plugin.

L'installation est assez simple:

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

Ensuite, j'ai copié et collé à l'exemple de code dans la page 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
);

J'ai lancé l'application en utilisant les commandes suivantes:

ionic emulate android -lcs

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

Au premier abord, l'appareil photo n'affiche pas alors j'ai couru chrome://inspect et a vu des avertissements à propos de Cordova manquant "essayez d'exécuter dans un émulateur", mais c'était lors de l'exécution dans un émulateur android. J'ai essayé iOS trop et vu les mêmes résultats.

Des idées pourquoi cordova n'est pas chargé?

Voici le message d'erreur de journal à partir de chrome://inspect lors de l'exécution dans un émulateur android:

enter image description here

Mise à jour... index.html

(c'est juste le standard généré par ionique)

<!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's 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>

160voto

Paresh Points 1271

C'est assez tard, mais tout le monde passe par le même problème peut bénéficier de cette réponse.Essayez d'abord d'ajouter navigateur en exécutant la commande ci-dessous ionic platform add browser , puis exécutez la commande ionic run browser.

quelle est la différence entre ionic serve and ionic run browser?

Ionique servir les pistes de votre application sur un site web (ce qui signifie qu'il n'a pas toute la Cordova capacités). Ionique exécutez le navigateur exécute votre application dans le Cordova une plateforme de navigateur, ce qui permettra d'injecter cordova.js et tous les plugins que ont les capacités du navigateur

Vous pouvez consulter ce lien pour en savoir plus la différence entre ionic serve et ionic run browser commande

Mise à jour

À partir Ionique 3 cette commande a été changé. Utilisez la commande ci-dessous à la place;

ionic cordova platform add browser

ionic cordova run browser

Vous pouvez trouver la version ionique vous à l'aide en cours d'exécution: ionic --version

62voto

Sergio Points 1134

Le livereload plugin ne parvient pas à servir cordova.js fichier et sert // se moquer de cordova fichier en cours de développement.

CORRECTIF: Vous avez besoin d'aller à node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js

et remplacer

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

pour

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

8voto

Suraj Rao Points 23390

Vous avez peut-être raté une étape. Avez-vous construire pour la plate-forme avant de les imiter?

ionic cordova build android
ionic cordova build ios

-4voto

himanshu Points 1
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 {}

-4voto

J'ai aussi eu ce même problème.

- Je construire .apk fichier du projet et l'a installé dans le mobile(android) et il a obtenu de travail

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X