Ionic 2: Cordova non è disponibile. Assicurati di includere cordova.js o esegui un dispositivo / simulatore (in esecuzione in emulatore)

Ho appena installato la mia prima app ionica 2 (ho usato ionico 1 abbastanza ampiamente). Sto provando ad usare il plug -in di anteprima della fotocamera nativo-ionico .

L’installazione era abbastanza semplice:

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 

Quindi ho copiato e incollato il codice di esempio nella pagina 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 ); 

Ho lanciato l’app utilizzando i seguenti comandi:

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

All’inizio la telecamera non si presentava, quindi ho eseguito chrome://inspect e ho visto gli avvertimenti su Cordova mancanti “prova a correre in un emulatore”, ma questo è stato eseguito in un emulatore Android. Ho provato anche iOS e ho visto gli stessi risultati.

    Qualche idea per cui cordova non si carica?

    Ecco il log degli errori completo di chrome://inspect durante l’esecuzione in un emulatore Android:

    inserisci la descrizione dell'immagine qui

    Aggiorna … index.html

    (è solo quello standard generato da ionico)

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

    Il plugin livereload non riesce a servire il file cordova.js e serve // ​​mock cordova file durante lo sviluppo.

    FIX: devi andare su node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js

    e sostituire

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

    a

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

    Questo è abbastanza tardi, ma chiunque sta affrontando lo stesso problema potrebbe trarre beneficio da questa risposta. Per prima cosa provare ad aggiungere il browser eseguendo sotto il comando ionic platform add browser e quindi ionic run browser comando ionic run browser comando.

    qual è la differenza tra il ionic serve and ionic run browser ?

    Ionic serve – esegue la tua app come un sito Web (il che significa che non ha capacità Cordova). Ionic run browser – esegue la tua app nella piattaforma del browser Cordova, che inietterà cordova.js e qualsiasi plugin che abbia funzionalità browser

    È ansible fare riferimento a questo link per conoscere più differenze tra il comando ionic run browser e il comando ionic run browser

    Aggiornare

    Da Ionic 3 questo comando è stato modificato. Usa invece il comando sottostante;

    ionic cordova platform add browser

    ionic cordova run browser

    Puoi scoprire quale versione di ionic stai usando eseguendo: ionic --version

    Potresti aver saltato un passaggio. Hai costruito per la piattaforma prima di emulare?

     ionic cordova build android ionic cordova build ios 
     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    Send Invoice      To    CC    BCC    Add pdf    Subject    Text message     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 {} 

    controlla il tuo src / index.html se lo hai

      

    Nel caso in cui qualcuno si imbatta nuovamente in questo problema, la soluzione accettata ha funzionato per versioni precedenti di script ionici e app, l’avevo usata molte volte in passato, ma la scorsa settimana, dopo aver aggiornato alcune cose, si è rotto di nuovo, e questo la correzione non funzionava più poiché questo era già stato risolto nella versione attuale degli script app, la maggior parte delle informazioni è riferita su questo post https://forum.ionicframework.com/t/ionic-cordova-run-android-livereload -cordova-non-disponibile / 116790/18 ma lo farò breve qui:

    Prima assicurati di avere questa versione sul tuo sistema

    pacchetti cli: (xxxx \ npm \ node_modules)

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

    pacchetti globali:

     cordova (Cordova CLI) : not installed 

    pacchetti locali:

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

    Sistema:

     Node : v10.1.0 npm : 5.6.0 

    Questo sul tuo pacchetto.json

    “@ angular / cli”: “^ 6.0.3”, “@ ionic / app-scripts”: “^ 3.1.9”, “typescript”: “~ 2.4.2”

    Ora rimuovi la piattaforma con la piattaforma ionica cordova rm what-ever Then ELIMINA la cartella node_modules e plugins e ASSICURI che la piattaforma sia stata eliminata all’interno della cartella delle piattaforms.

    Finalmente, corri

    npm installa la piattaforma ionica cordova e aggiungi sempre la cordova ionica

    E tutto dovrebbe funzionare di nuovo