undefined не является функцией (оценивается как _iterator2 [typeof Symbol === "function") - PullRequest
0 голосов
/ 29 августа 2018

Я использую firebase с реактивным родным, вот версии, с которыми я работаю

"firebase": "^5.4.1",
"react-native": "0.56.0",
"react": "16.4.1",

Но когда я импортирую firebase, появляется следующая ошибка:

undefined is not a function (evaluating '_iterator2[typeof Symbol === "function" ? Symbol.iterator : "@@iterator"]()')

enter image description here

Примечание: Получение этой ошибки только на устройстве Android, на iOS она работает отлично.

Ответы [ 4 ]

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

Я пробовал решения, прежде всего, но что решило мою ошибку, так это следующие шаги:

  1. создайте код файла polyfills и поместите его в файл с именем polyfills.js , на том же уровне, что и index.js (точка входа в мой реактивный проект )

  2. код:

global.Symbol = require('core-js/es6/symbol');
require('core-js/fn/symbol/iterator');
require('core-js/fn/map');
require('core-js/fn/set');
require('core-js/fn/array/find');
  1. В первой строке файла index.js указан следующий код:
import './polyfills.js';

Теперь перезагрузите приложение (дважды нажмите R). Надеюсь, что это работает!

Ответ Ссылка

0 голосов
/ 04 января 2019

Решение, предоставленное @Syph, не позволяет мне работать идеально, я должен добавить следующее в "index.js", и оно работает для меня.

global.Symbol = require('core-js/es6/symbol');
require('core-js/fn/symbol/iterator');
require('core-js/fn/map');
require('core-js/fn/set');
require('core-js/fn/array/find');

if (Platform.OS === 'android') {
    if (typeof Symbol === 'undefined') {
        if (Array.prototype['@@iterator'] === undefined) {
            Array.prototype['@@iterator'] = function () {
                let i = 0;
                return {
                    next: () => ({
                        done: i >= this.length,
                        value: this[i++],
                    }),
                };
             };
        }
    }
}
0 голосов
/ 23 февраля 2019

Может быть, эти синтаксисы JS при импорте firebase не могут быть поняты Android. Добавление этих кодов в ваш index.js может решить эту проблему.

Примечание. Если у вас отдельный index.android.js, добавьте эти коды в этот файл.

global.Symbol = require('core-js/es6/symbol');
require('core-js/fn/symbol/iterator');
require('core-js/fn/map');
require('core-js/fn/set');
require('core-js/fn/array/find');
0 голосов
/ 26 сентября 2018

У меня была такая же проблема при импорте Firebase, и я нашел решение здесь

Добавьте это в свой index.js

// index.js
global.Symbol = require('core-js/es6/symbol');
require('core-js/fn/symbol/iterator');
require('core-js/fn/map');
require('core-js/fn/set');
require('core-js/fn/array/find');

На мой взгляд, существуют определенные синтаксисы JS, которые не очень хорошо понимают Android.

...