Ионная 4: Кордова недоступна. Не забудьте включить cordova.js или запустить в устройстве / симуляторе - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать плагин cordova в новом проекте ionic 4, но всегда сталкиваюсь с ошибками в отношении cordova.Плагин правильно установлен и отображается в папке плагина.

Ошибка

Собственный: попытался вызвать SplashScreen.hide, но Cordova недоступна.Обязательно включите cordova.js или запустите на устройстве / симуляторе

home.page.html

<ion-header>
  <ion-toolbar>
    <ion-title>
      Ionic Blank
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-button expand="full" (click)="openLocalPdf()">Open Local PDF</ion-button>
  <ion-button expand="full" (click)="downloadAndOpenPdf()">Download and open PDF</ion-button>
</ion-content>

home.page.ts

import { Platform } from '@ionic/angular';
import { File } from '@ionic-native/File/ngx';
import { Component } from '@angular/core';
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { DocumentViewer, DocumentViewerOptions } from '@ionic-native/document-viewer/ngx';
import { FileTransfer } from '@ionic-native/file-transfer/ngx';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
  constructor(private platform: Platform, private file: File, private ft: FileTransfer,
              private fileOpener: FileOpener, private document: DocumentViewer, ) {

  }
  openLocalPdf() {
        const filePath = this.file.applicationDirectory + 'www/assets';

        if (this.platform.is('android')) {
      const fakeName = Date.now();
      this.file.copyFile(filePath, '5-tools.pdf', this.file.dataDirectory, `${fakeName}.pdf`).then(result => {
        this.fileOpener.open(result.nativeURL, 'application/pdf')
          .then(() => console.log('File is opened'))
          .catch(e => console.log('Error opening file', e));
      });
    } else {
      // Use Document viewer for iOS for a better UI
      const options: DocumentViewerOptions = {
        title: 'My PDF'
      };
      this.document.viewDocument(`${filePath}/5-tools.pdf`, 'application/pdf', options);
    }
  }

  downloadAndOpenPdf() {
    const downloadUrl = 'https://devdactic.com/html/5-simple-hacks-LBT.pdf';
    const path = this.file.dataDirectory;
    const transfer = this.ft.create();

    transfer.download(downloadUrl, path + 'myfile.pdf').then(entry => {
      const url = entry.toURL();

      if (this.platform.is('ios')) {
        this.document.viewDocument(url, 'application/pdf', {});
      } else {
        this.fileOpener.open(url, 'application/pdf')
          .then(() => console.log('File is opened'))
          .catch(e => console.log('Error opening file', e));
      }
    });
  }
}

1 Ответ

0 голосов
/ 03 мая 2019

Когда вы используете ионную подачу, вы запускаете свое приложение как веб-сайт. Так что Кордова не будет доступна. Таким образом, приводя к ошибке вы получаете

Вы можете обойти это несколькими способами.

Сначала вы можете использовать следующее для запуска его в браузере с cordova

ionic cordova platform add browser
ionic cordova run browser 

и запустите его в браузере

Во-вторых, вы можете проверить это непосредственно (или с помощью эмулятора), введя

ionic cordova platform add <ios/android>
ionic cordova run <android/ios> <--device>

- устройство, если вы используете физическое устройство или нет, если вы собираетесь использовать эмулятор. Конечно, для этого потребуются JAVA SDK, ANDROID SDK и Gradle

В долгосрочной перспективе я бы порекомендовал перейти позже, так как вы все равно протестировали приложение на нативном устройстве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...