Ionic 3 FireReader не работает, но Ionic 4 может - PullRequest
0 голосов
/ 30 октября 2018

Я построил свой проект Ionic на двух разных компьютерах и получил разные результаты.

Первый компьютер: Ionic Info

Ионный:

ionic (Ionic CLI): 4.2.1 (/ usr / local / lib / node_modules / ionic) Ionic Framework: ионно-угловой 3.9.2 @ ionic / app-scripts: 3.2.0

Кордова:

cordova (Cordova CLI): 8.1.2 (cordova-lib@8.1.1) Платформы Cordova: Android 7.1.1 Плагины Cordova: нет плагинов в белом списке (всего 19 плагинов)

Система:

NodeJS: v8.11.3 (/ usr / bin / node) нпм: 6.2.0 ОС: Linux 4.15

FileReader работает только когда я помещаю await в reader.readAsDataURL ();

Второй компьютер:

Ионная информация

cli пакетов: (/ usr / local / lib / node_modules)

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

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

cordova (Cordova CLI) : 8.0.0

местные пакеты:

@ionic/app-scripts : 3.1.8
Cordova Platforms  : ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

мой код:

async downloadFromURL(fileName, mimeType, url){
    return new Promise((resolve,reject) => {
        try{
            var self = this;
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url, true);
            xhr.responseType='blob';  
            xhr.onloadend = async function(e) {
                if (xhr.status == 200)
                {
                    var reader = new FileReader();
                    reader.onloadend = async function(event){
                        var response = self.insertFile({
                            'type': mimeType,
                            'title': fileName
                        }, event.target["result"].split(',')[1]);
                        resolve(response);
                    }
                    await reader.readAsDataURL(xhr.response);
                }
            };
            xhr.send();
        } catch (error) {
            reject();
            console.log("error", error);
        }
    });
}

Итак, мой вопрос: как я могу это исправить без обновления ionic и cordova?

И извините за мой плохой английский: D

Заранее спасибо.

1 Ответ

0 голосов
/ 29 марта 2019

в вашем index.html попробуйте переместить тег сценария для cordova.js из заголовка в тело ниже тега build/polyfills.js. Моя метка тела теперь выглядит так:

<body>

  <!-- Ionic's root component and where the app will load -->
  <ion-app></ion-app>

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

  <!-- cordova.js required for cordova apps (remove if not needed) -->
  <script src="cordova.js"></script>

  <!-- The vendor js is generated during the build process
       It contains all of the dependencies in node_modules -->
  <script src="build/vendor.js"></script>

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

</body>

По-видимому, это известная проблема с zone.js, согласно этой записи .

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