React Native 找不到变量atob

jgwigjjp  于 2023-02-09  发布在  React
关注(0)|答案(5)|浏览(238)

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>
    )
}

控制台

[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

我只是按照expo文档中的指南操作,但仍然不知道为什么会出现这个问题。需要一个明确的解释。还有什么是atob变量?

j5fpnvbx

j5fpnvbx1#

我试过降级,但这对我来说不是一个解决办法。我不知道为什么。

app.jsbase64的全局导入解决了这个问题。

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

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

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

感谢您的回复。

dxxyhpgq

dxxyhpgq2#

为我工作!谢谢papay0,版本7.9.1确实有问题。

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

你可以rm -rf ./node_modules/ && npm i

blmhpbnm

blmhpbnm3#

我找到了一个变通办法,我仍然有一个错误在他们这边。他们刚刚发布了2天前的版本7. 9. 1。尝试使用7. 9. 0。
Yarn添加耐火材料@7.9.0
我正在为它创建一个问题,请遵循here

ykejflvf

ykejflvf4#

谢谢@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'
vof42yt1

vof42yt15#

atob函数是JavaScript窗口对象的一部分,在React Native中不可用。
要在React Native中解码base64编码的数据,可以使用base-64库

相关问题