検索

ホームページ  >  に質問  >  本文

アプリケーションから渡された Firestore オブジェクトを使用してカスタム npm パッケージから Firestore DB を読み取ることができません

Firestore データベースを使用する独自の npm パッケージを作成しようとしています。 アプリケーションから渡された Firestore オブジェクトを使用して、パッケージからクラスを初期化します。 リーリー

パッケージから関数を呼び出すと

await test.getDoc('pathto/doc') エラーが発生します。 Uncaught (約束された) FirebaseError: collection() の最初の引数は CollectionReference、DocumentReference、または FirebaseFirestore であることが予期されています

Firestore から読み取るために Firestore オブジェクトを初期化するさまざまな組み合わせを試してみました。

firebaseConfig を使用してパッケージ内の Firebase アプリを完全に初期化した場合にのみ、Firestore からデータを読み取ることができますが、親アプリから認証を継承せず、パブリックにアクセス可能なコレクションのみを読み取ることができます。

パッケージに

doc(db, documentPath) を渡そうとしたところ、何が起こっているのかを示すエラーが発生しました: 型が予期されたインスタンスと一致しません。別の Firestore SDK からの参照を渡していますか?

そこで、パッケージから Firebase を使用すると、別の Firebase SDK インスタンスが作成されると考えました。

私はアプリとパッケージで同じ firebase パッケージ バージョンを使用しており、パッケージ firebase をピアの依存関係として設定しています。

パッケージのメインアプリで初期化されるのと同じ

Firebase オブジェクトをシームレスに使用したいと考えています。

これを達成するために私にできることがある場合、誰かが私を理解するのを手伝ってくれませんか?

これは私のテスト パッケージのコードです。

リーリー

更新

ローカル ソースからパッケージをインストールし、ローカル リポジトリへのシンボリック リンクを使用してみましたが、役に立ちませんでした。

次に、パッケージ リポジトリを GitHub にプッシュし、GitHub リポジトリをソースとして使用してパッケージをインストールしたところ、機能するようになりました。

ローカル ソースを使用する場合、私のパッケージでは常に別の Firebase インスタンスが使用されるようです。 パッケージプロジェクトフォルダー全体をアプリケーションフォルダーに配置し、アプリのような部分的なパッケージを使用しても役に立ちませんでした。

GitHub からのインストールは開発ソリューションではないため、最終的にアプリ プロジェクト内にフォルダーを作成し、すべてのパッケージ ファイルをアプリの一部であるかのようにその中に配置しました。編集後、パッケージ リポジトリにコピーします。

これより良い解決策があるかどうかはわかりません。

更新

開発上の問題を解決するパッケージ

relative-deps を見つけました。

P粉064448449P粉064448449444日前540

全員に返信(1)返信します

  • P粉080643975

    P粉0806439752023-09-11 09:27:04

    元の投稿者が質問を編集して質問に回答したため。このコンテンツは、コミュニティの認知度を高めるために投稿されています:


    npmrelative-deps は、ローカル パッケージまたはワークスペース内の相対ファイル パスを使用して依存関係を定義できる機能を指します。

    この機能は npm バージョン 7 で追加されました。パッケージ名や npm レジストリに依存するのではなく、プロジェクト内の他のパッケージまたはモジュールを直接参照できます。

    これにより、特にモノリポジトリや相互に関連する多数のパッケージを使用するプロジェクトの開発が容易になります。 npm package.json ファイルで指定されたファイル パスに基づいて依存関係を解決し、インストールします。


    : v7以降のnpmバージョンのみがこの機能をサポートしています。

    返事
    0
  • キャンセル返事