【问题标题】:angulardart firestore throw error "firebase.firestore is not a function"angulardart firestore 抛出错误“firebase.firestore 不是函数”
【发布时间】:2018-03-24 10:11:58
【问题描述】:

抱歉,这里是新手问题。这是我的 firebase_service.dart

import 'package:firebase/firebase.dart' as fb;
import 'package:firebase/firestore.dart' as fs;
import 'dart:async';
import 'package:angular/angular.dart';

@Injectable()
class FirebaseService {
  fb.User user;
  fs.DocumentReference reference;

  FirebaseService() {
    fb.initializeApp(
        apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        authDomain: "xxxxxx.firebaseapp.com",
        databaseURL: "https://xxxxxx.firebaseio.com",
        projectId: "xxxxxxx",
        storageBucket: "xxxxxxxxxxxx.appspot.com",
        messagingSenderId: "xxxxxxxxxx"
    );

    fb.auth().onAuthStateChanged.listen(_authChanged);
  }

    void _authChanged(fb.User event) => user = event;

  Future signIn() async {
    try {
      await fb.auth().signInWithPopup(new fb.GoogleAuthProvider());
    }
    catch (e) {
      print("$runtimeType::login() -- $e");
    }
  }

  void signOut() => fb.auth().signOut();

  Future submitName(id, name) async {
    reference = fb.firestore().doc('userdata/$id');
    try {
        await reference.set(id(name));
      } catch (e) {
        print('error submitting: $e');
      }
  }
}

我正在尝试通过调用将用户名和用户 ID 提交到 Firestore

fbService.submitName(id, name);

但我收到了这个错误

error submitting: NoSuchMethodError: method not found: 'call$1' (id.call$1 is not a function)

我不知道我的代码有什么问题。我曾尝试寻找一些 angulardart firestore 教程,但没有运气。我正在使用 dart-sdk 1.24.3、angular 4.0.0+2 和 firebase 4.4.0

我已经尝试基于pub website使用这个

<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase-firestore.js"></script>

还有这个

<script src="https://www.gstatic.com/firebasejs/4.11.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-firestore.js"></script>

但还是出现同样的错误

【问题讨论】:

    标签: firebase dart google-cloud-firestore angular-dart


    【解决方案1】:

    您在index.html 中似乎缺少以下一个或两个脚本标签

    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-firestore.js"></script>
    

    Dart Firebase 包只是 JS 实现的一个包装器,因此需要先加载它,然后才能从 Dart 中使用它。

    【讨论】:

    • 我刚刚意识到我的 index.html 中有旧版本的 firebase-firestore.js。我已经修复它并收到新的错误消息“错误提交:NoSuchMethodError:找不到方法:'call$1'(id.call$1 不是函数)”
    • 您能否编辑您的问题并添加新错误?
    • 对于菜鸟的行为很抱歉,我已经编辑了我的问题
    • 不用担心。我没有投反对票,也没有看到投反对票的理由。不用太担心。
    • 我的问题已经解决了,应该是reference.set({id: name}) 而不是reference.set(id(name))
    猜你喜欢
    • 1970-01-01
    • 2019-01-06
    • 2021-08-09
    • 2021-04-17
    • 2020-06-06
    • 2021-07-10
    • 2020-10-28
    • 2021-05-01
    相关资源
    最近更新 更多