アプリケーションをFirebaseに切り替えて、バックエンドをFirebase CloudFunctionsに転送しようとしています。
このアプリケーションは、依存関係としてプライベートパッケージ(@org/name
)を使用しています。
私は別の解決策を試しましたが、どれもうまくいかないようです:
NPM_TOKEN
envを渡す:Firebaseは小文字の設定に制限されているため、できませんnpm install
関数ディレクトリ内のモジュール.npmrc
ファイルを作成します次の場合、常に展開を拒否します。
Deploy Error: Build failed: Module @org/name not found in npm registry
プライベートパッケージはFirebaseでサポートされていますか?
Npmで公開されていないパッケージを含める場合は、自分でパッケージ化して、functionsフォルダーに含める必要があります。デプロイすると関数フォルダー全体がアップロードされるため、ローカルの場合と同じようにフォルダーから必要なものを要求できるはずです。
Google CloudFunctionsがプライベートNPMパッケージをサポートするようになりました。
プライベートnpmモジュールを使用するには、関数のディレクトリにある.npmrcファイルでnpmレジストリの資格情報(認証トークン)を提供する必要があります。 npm loginコマンドを使用してnpmにログインしたときに、ホームディレクトリに作成された.npmrcファイルをコピーするだけです。
プライベートリポジトリを使用していない場合は、.npmrcファイルを含めないでください。関数の展開時間が長くなる可能性があります。
出典: https://cloud.google.com/functions/docs/writing/dependencies#using_private_modules
現在、それを行う便利な方法はありません。
GCFはnpmクライアントを使用してnpmレジストリからフェッチせず、代わりに直接フェッチしているように見えます。これにより、標準の.npmrc
ファイルやnpmクライアントが認識している他の方法を使用できなくなります。
パッケージをローカルにパックしてインストールし、ソースコードにコミットする必要があります。
$ npm pack @org/name
$ npm install --save tarball-output.tgz
これにより、ローカルtarballがpackage.json
に追加され、Google CloudFunctionsはそれを使用することを認識します。
プロジェクトのルートパスから.npmrc
を読み取るか、あるいは環境変数としてトークンを渡すことができれば幸いです。
それについては未解決の問題があります: https://issuetracker.google.com/issues/36665861
Firebaseは、.npmrc
ファイルを含むプライベートnpmモジュールをサポートするようになりました。チェックアウト this リンク。
Google Issue Tracker を参照して、これは修正されました。詳細については、 Google Cloud Platform のドキュメントを確認してください。
プライベートモジュールの使用
プライベートnpmモジュールを使用するには、関数のディレクトリにある.npmrc
ファイルでnpmレジストリの資格情報(認証トークン)を提供する必要があります。 npm loginコマンドを使用してnpmにログインしたときに、ホームディレクトリに作成された.npmrc
ファイルをコピーするだけです。
プライベートリポジトリを使用していない場合は、.npmrc
ファイルを含めないでください。関数のデプロイ時間が長くなる可能性があります。
問題が解決しない場合は、 Google Issue Tracker で報告してください。再度開いて調査します。