Firestore データベースを使用する独自の npm パッケージを作成しようとしています。 アプリケーションから渡された Firestore オブジェクトを使用して、パッケージからクラスを初期化します。 リーリー
パッケージから関数を呼び出すとawait test.getDoc('pathto/doc') エラーが発生します。
Uncaught (約束された) FirebaseError: collection() の最初の引数は CollectionReference、DocumentReference、または FirebaseFirestore であることが予期されています
firebaseConfig を使用してパッケージ内の Firebase アプリを完全に初期化した場合にのみ、Firestore からデータを読み取ることができますが、親アプリから認証を継承せず、パブリックにアクセス可能なコレクションのみを読み取ることができます。
doc(db, documentPath) を渡そうとしたところ、何が起こっているのかを示すエラーが発生しました:
型が予期されたインスタンスと一致しません。別の Firestore SDK からの参照を渡していますか?
私はアプリとパッケージで同じ firebase パッケージ バージョンを使用しており、パッケージ firebase をピアの依存関係として設定しています。
パッケージのメインアプリで初期化されるのと同じ
Firebase オブジェクトをシームレスに使用したいと考えています。
これは私のテスト パッケージのコードです。
リーリー
更新ローカル ソースからパッケージをインストールし、ローカル リポジトリへのシンボリック リンクを使用してみましたが、役に立ちませんでした。
次に、パッケージ リポジトリを GitHub にプッシュし、GitHub リポジトリをソースとして使用してパッケージをインストールしたところ、機能するようになりました。
ローカル ソースを使用する場合、私のパッケージでは常に別の Firebase インスタンスが使用されるようです。 パッケージプロジェクトフォルダー全体をアプリケーションフォルダーに配置し、アプリのような部分的なパッケージを使用しても役に立ちませんでした。
GitHub からのインストールは開発ソリューションではないため、最終的にアプリ プロジェクト内にフォルダーを作成し、すべてのパッケージ ファイルをアプリの一部であるかのようにその中に配置しました。編集後、パッケージ リポジトリにコピーします。
これより良い解決策があるかどうかはわかりません。
更新
開発上の問題を解決するパッケージ
relative-deps を見つけました。
元の投稿者が質問を編集して質問に回答したため。このコンテンツは、コミュニティの認知度を高めるために投稿されています:
npm
のrelative-deps
は、ローカル パッケージまたはワークスペース内の相対ファイル パスを使用して依存関係を定義できる機能を指します。この機能は
npm
バージョン 7 で追加されました。パッケージ名やnpm
レジストリに依存するのではなく、プロジェクト内の他のパッケージまたはモジュールを直接参照できます。 p>これにより、特にモノリポジトリや相互に関連する多数のパッケージを使用するプロジェクトの開発が容易になります。
npm
package.json
ファイルで指定されたファイル パスに基づいて依存関係を解決し、インストールします。注: v7以降のnpmバージョンのみがこの機能をサポートしています。