未定义不是函数(评估'_iterator2 [typeof Symbol ===“函数”

时间:2018-08-29 10:55:43

标签: firebase react-native react-native-firebase

我正在使用react native实现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 :(得分:10)

导入Firebase时遇到相同的问题,并找到了解决方法here

在您的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理解。

答案 1 :(得分:0)

@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++],
                    }),
                };
             };
        }
    }
}

答案 2 :(得分:0)

Android可能无法理解导入Firebase时的这些JS语法。将这些代码添加到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');

答案 3 :(得分:0)

我首先尝试了解决方案,但是解决了我的错误的步骤是:

  1. 创建一个polyfills文件代码并将其放入名为 polyfills.js 的文件中,该文件与 index.js 位于同一级别(我的react-本机项目)

  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两次)。希望它有效!

Answer Reference