1amageek / ballcap.ts

Cloud Firestore support library for admin. 🧢
107 stars 13 forks source link

undefined is not an object(evaluating 'firebase.firestore.CollectionReference') #2

Closed kahirokunn closed 5 years ago

kahirokunn commented 5 years ago

実行環境 react native expo

事前知識 firebase js sdkを直接使う場合にはエラーは発生しない

本文

undefined is not an object(evaluating 'firebase.firestore.CollectionReference')

ってエラーが出ます。

該当ファイルはこちらです。

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const firebase = require("firebase");
/*
 * Class
 */
const Codable_1 = require("./Codable");
exports.Codable = Codable_1.Codable;
const Field_1 = require("./Field");
exports.Field = Field_1.Field;
const File_1 = require("./File");
exports.File = File_1.File;
const SubCollection_1 = require("./SubCollection");
exports.SubCollection = SubCollection_1.SubCollection;
const Model_1 = require("./Model");
exports.Model = Model_1.Model;
const Document_1 = require("./Document");
exports.Doc = Document_1.Doc;
const Collection_1 = require("./Collection");
exports.Collection = Collection_1.Collection;
const Batch_1 = require("./Batch");
exports.Batch = Batch_1.Batch;
exports.initialize = (appFirestore, root) => {
    exports.firestore = appFirestore;
    exports.rootReference = root || exports.firestore;
};
exports.CollectionReference = firebase.firestore.CollectionReference;
exports.DocumentReference = firebase.firestore.DocumentReference;
exports.DocumentSnapshot = firebase.firestore.DocumentSnapshot;
exports.FieldPath = firebase.firestore.FieldPath;
exports.FieldValue = firebase.firestore.FieldValue;
exports.Firestore = firebase.firestore.Firestore;
exports.GeoPoint = firebase.firestore.GeoPoint;
exports.Query = firebase.firestore.Query;
exports.QueryDocumentSnapshot = firebase.firestore.QueryDocumentSnapshot;
exports.QuerySnapshot = firebase.firestore.QuerySnapshot;
exports.Timestamp = firebase.firestore.Timestamp;
exports.Transaction = firebase.firestore.Transaction;
exports.WriteBatch = firebase.firestore.WriteBatch;
//# sourceMappingURL=index.js.map

ここのrequire("firebase");にconsole.logを直接仕組むとこういう結果になります。

Object {
  "INTERNAL": Object {
    "ErrorFactory": [Function ErrorFactory],
    "createFirebaseNamespace": [Function createFirebaseNamespace],
    "createSubscribe": [Function createSubscribe],
    "deepExtend": [Function deepExtend],
    "extendNamespace": [Function extendNamespace],
    "factories": Object {
      "auth": [Function anonymous],
      "database": [Function anonymous],
      "storage": [Function factory],
    },
    "reactNative": Object {
      "AsyncStorage": Object {
        "_getKeys": Array [],
        "_getRequests": Array [],
        "_immediate": null,
        "clear": [Function clear],
        "flushGetRequests": [Function flushGetRequests],
        "getAllKeys": [Function getAllKeys],
        "getItem": [Function getItem],
        "mergeItem": [Function mergeItem],
        "multiGet": [Function multiGet],
        "multiMerge": [Function multiMerge],
        "multiRemove": [Function multiRemove],
        "multiSet": [Function multiSet],
        "removeItem": [Function removeItem],
        "setItem": [Function setItem],
      },
    },
    "registerService": [Function registerService],
    "removeApp": [Function removeApp],
    "useAsService": [Function useAsService],
  },
  "SDK_VERSION": "6.0.4",
  "User": [Function P],
  "__esModule": true,
  "app": [Function app],
  "apps": Array [],
  "auth": [Function serviceNamespace],
  "database": [Function serviceNamespace],
  "default": [Circular],
  "initializeApp": [Function initializeApp],
  "storage": [Function serviceNamespace],
}

確かにfirestoreがないです。

自身のアプリケーションの方でconsole.log(require("firebase"))をすると、以下の結果がでます。

Object {
  "INTERNAL": Object {
    "ErrorFactory": [Function ErrorFactory],
    "createFirebaseNamespace": [Function createFirebaseNamespace],
    "createSubscribe": [Function createSubscribe],
    "deepExtend": [Function deepExtend],
    "extendNamespace": [Function extendNamespace],
    "factories": Object {
      "auth": [Function anonymous],
      "database": [Function anonymous],
      "firestore": [Function anonymous],
      "storage": [Function factory],
    },
    "reactNative": Object {
      "AsyncStorage": Object {
        "_getKeys": Array [],
        "_getRequests": Array [],
        "_immediate": null,
        "clear": [Function clear],
        "flushGetRequests": [Function flushGetRequests],
        "getAllKeys": [Function getAllKeys],
        "getItem": [Function getItem],
        "mergeItem": [Function mergeItem],
        "multiGet": [Function multiGet],
        "multiMerge": [Function multiMerge],
        "multiRemove": [Function multiRemove],
        "multiSet": [Function multiSet],
        "removeItem": [Function removeItem],
        "setItem": [Function setItem],
      },
    },
    "registerService": [Function registerService],
    "removeApp": [Function removeApp],
    "useAsService": [Function useAsService],
  },
  "SDK_VERSION": "6.0.4",
  "User": [Function P],
  "__esModule": true,
  "app": [Function app],
  "apps": Array [],
  "auth": [Function serviceNamespace],
  "database": [Function serviceNamespace],
  "default": [Circular],
  "firestore": [Function serviceNamespace],
  "initializeApp": [Function initializeApp],
  "storage": [Function serviceNamespace],
}

firestoreがあります。

kahirokunn commented 5 years ago

一応症状が確認できるリポジトリがこちらになります https://github.com/kahirokunn/expo-ballcap

1amageek commented 5 years ago

Please insert this your App.tsx

import '@firebase/firestore'