类型错误undefined不是对象(评估'Wu.getRandomValues')

时间:2020-04-04 13:07:10

标签: firebase react-native google-cloud-firestore expo

这是我为向集合中添加数据而实现的代码:

import FirebaseKeys from "./config";
import firebase from "firebase";
import "@firebase/firestore";

class Fire {
  constructor() {
    firebase.initializeApp(FirebaseKeys);
  }
  addPost = async ({ text, localUri }) => {
    const remoteUri = await this.uploadPhotoAsync(localUri);
    const desc = text;

    return new Promise((res, rej) => {
      // console.log("THIS FIRESTORE" + this.firestore);
      const dbh = firebase.firestore();

      // this.firestore.collection("posts").add({
      //     text: desc,
      //     uid: this.uid,
      //     timestamp: this.timestamp,
      //     image: remoteUri
      //   })

      dbh
        .collection("posts")
        .doc("feed")
        .set({
          text: desc,
          uid: this.uid,
          timestamp: this.timestamp,
          image: remoteUri
        })
        .then(ref => {
          res(ref);
          console.log("EVERYTHING IS FINE HERE");
        })
        .catch(error => {
          console.log("ERROR HERE TOO");

          rej(error);
        });
    });
  };

  uploadPhotoAsync = async uri => {
    console.log(this);

    const path = "Date.jpg";
    return new Promise(async (res, rej) => {
      const response = await fetch(uri);
      const file = await response.blob();

      let upload = firebase
        .storage()
        .ref(path)
        .put(file);
      upload.on(
        "state_changed",
        snapshot => {},
        err => {
          console.log("ERROR IN PHOTO UPLOAD");

          rej(err);
        },
        async () => {
          const url = await upload.snapshot.ref.getDownloadURL();
          res(url);
          console.log("IMAGE IS UPLOADING FINE");
        }
      );
    });
  };
  get firestore() {
    return firebase.firestore();
  }

  get uid() {
    return (firebase.auth().currentUser || {}).uid;
  }

  get timestamp() {
    return Date.now();
  }
}

Fire.shared = new Fire();
export default Fire;

我正在使用expo react native和firebase进行数据处理来构建应用程序。 但是,当使用向集合中添加数据的功能时,它会显示类似

的错误

未定义不是对象(正在评估'Wu.getRandomValues')

帮帮我

SCREENSHOT OF THE ERROR

4 个答案:

答案 0 :(得分:3)

更新:问题已here得到解决,应在v7.13.3中修复。我之前曾说过降级到Firebase v7.9.0可以解决此问题。我发现该问题直到v7.13.2才存在。因此我们可以降级到v7.13.1。但是,我们必须完全卸载firebase才能起作用。

我在expo和firebase上遇到了相同的错误。我使用的是Expo 37版。要解决此问题,我必须在应用目录中使用以下命令降级Firebase:

npm remove --save firebase 
npm install --save firebase@7.13.1

如果我使用Firebase版本7.13.2,则会出现此错误:

未定义不是对象(正在评估'Wu.getRandomValues')

答案 1 :(得分:0)

另一个问题的评论有一个解决方案:我遇到了同样的问题。将Firebase版本降级为@ 7.12.0,然后可以再次使用。

答案 2 :(得分:0)

这里有同样的问题。我发现我在android上的expo客户端已由Google Play更新。最新版本使用expo sdk 37。 我刚刚在项目中运行了expo update,一切又恢复正常了

答案 3 :(得分:0)

此处给出的答案(降级)有效。 不过,就我而言,降级后,我发现真正的错误是权限错误(生产模式)。

因此,真正的问题是该错误掩盖了任何真正的错误。希望它能尽快修复。