Не могу найти переменную atob - PullRequest
7 голосов
/ 23 февраля 2020

Screen1. js

import React,{useEffect} from 'react'
import {View,Text} from 'react-native'
import * as firebase from 'firebase/app';
import '@firebase/firestore';

const Screen1 = props =>{

    useEffect(() => 
    {
        var dbh = firebase.firestore().collection("Jots").doc("note");
        dbh.set({name:"pradeep"}) //The yellow warning is popped up in this line.
    }); 

    return(
             <View>
                <Text>Title</Text>
             </View>
    )
}

console

[Unhandled promise rejection: ReferenceError: Can't find variable: atob]

Stack trace:
  node_modules\@firebase\firestore\dist\index.cjs.js:23101:0 in <global>
  http://192.168.0.108:19001/node_modules%5Cexpo%5CAppEntry.bundle?platform=android&dev=true&minify=false&hot=false:131203:60 in fromBase64String


Я только следовал руководству в документации к выставке, но до сих пор не знаю, почему возникает эта проблема. Нужно четкое объяснение этого. А также что такое переменная atob?

Ответы [ 4 ]

29 голосов
/ 25 февраля 2020

Я пытался понизить рейтинг, но для меня это не решение. Я не знаю, почему.

Глобальный импорт base64 в приложении . js решил эту проблему.

import {decode, encode} from 'base-64'

if (!global.btoa) {  global.btoa = encode }

if (!global.atob) { global.atob = decode }

Спасибо за ваши ответы.

9 голосов
/ 24 февраля 2020

работал для меня! Спасибо papay0, с версией 7.9.1 что-то не так.

npm install firebase@7.9.0
expo r -c # restard expo without cache

Вы можете rm -rf ./node_modules/ && npm i

6 голосов
/ 24 февраля 2020

Я нашел обходной путь, у меня все еще есть ошибка на их стороне. Они только что выпустили 2 дня go версию 7.9.1. Попробуйте использовать 7.9.0.

пряжа добавить firebase@7.9.0

Я создаю проблему для него, следуйте здесь .

0 голосов
/ 07 мая 2020

Спасибо @Pradeep. Это сработало для меня на firebase 7.14.1:

import {decode, encode} from 'base-64'

if (!global.btoa) {  global.btoa = encode }

if (!global.atob) { global.atob = decode }

и использовании импорта вот так

import firebase from 'firebase';
import 'firebase/firestore'
...