2017-03-20 14 views
8

私はFirebaseにアプリケーションを切り替え、Firebase Cloud Functionsにバックエンドを転送しようとしています。クラウド機能を備えたプライベートNPMパッケージの使用方法は?

このアプリケーションはプライベートパッケージ(@org/name)を依存関係として使用しています。

私は別の解決策を試してみたが、どれも動いていないようにみえます:

  • NPM_TOKEN ENVパス:小文字に設定
  • npm installにFirebase限度ので、可能ではないが機能ディレクトリ内のモジュール
  • 作成.npmrc YARNとNPM両方の認証トークンを持つ関数ディレクトリ内のファイル

常にreje CTSでの展開:

Deploy Error: Build failed: Module @org/name not found in npm registry

がプライベートパッケージがFirebaseでサポートされていますか?

+0

!合理的な回避策を見つけた後、私は[この他の同様の質問](https://stackoverflow.com/questions/47643386/auto-deploy-google-cloud-functions-from-google-cloud-source)の回答で詳細を共有しました-control/48568937#48568937)。お役に立てれば! – erichiggins

答えて

3

と同じディレクトリにある必要がありpackage.jsonファイルに依存関係を追加するのを忘れていたが実現npmを介して公開されていない場合は、自分でパッケージ化して関数フォルダに追加する必要があります。関数フォルダ全体は、デプロイ時にアップロードされるため、ローカルの場合と同じように、その中から必要なものを要求することができます。

+2

ありがとう、これは私がビルドスクリプトと 'npm pack'で行ったことです。しかし、私はFirebaseがそれをサポートすべきだと思う( '.npmrc'ファイルをサポートする)。 –

-2

私も同じ問題を抱えていたが、その後、私は私はあなたがパッケージを含めたい場合は、あなたのindex.js

4

現在、それを実行する便利な方法はありません。

GCFはnpmレジストリからフェッチし、代わりに直接フェッチするためにnpmクライアントを使用しないようです。これにより、標準の.npmrcファイルまたはnpmクライアントが知っている他の方法を使用することができなくなります。

$ npm pack @org/name 
$ npm install --save tarball-output.tgz 

これは、それを使用するために知っているあなたのpackage.jsonとGoogleクラウド機能に地元のtarballを追加します。

あなたがパックとローカルであなたのパッケージをインストールして、ソースコードにそれをコミットする必要があります。

私は実際にプロジェクトのルートパスから.npmrcを読んだり、TOKENをenv変数として渡すことができます。それについての未解決の問題があります

https://issuetracker.google.com/issues/36665861

+0

これを試しましたが、firebase deployコマンドが失敗しました:npm ERR! addLocal /path/to/my.tgzをインストールできませんでした – okhobb

0

Google issue trackerを参照すると、この問題は修正されています。詳細については、Google Cloud Platformのドキュメントを参照してください。プライベートモジュールに

を使用して

プライベートNPMモジュールを使用するためには、機能のディレクトリにあるファイル.npmrcでNPMレジストリのために(認証トークン)の資格情報を提供する必要があります。 npm loginコマンドを使用してnpmにログインしたときに、ホームディレクトリに作成された.npmrcファイルを単純にコピーできます。

プライベートレポジトリを使用していない場合は、.npmrcファイルを含めないでください。これにより、機能のデプロイメント時間が長くなる可能性があります。

問題が解決しない場合は、Google issue trackerで報告してください。

1

Googleクラウド機能でプライベートNPMパッケージがサポートされるようになりました。

プライベートNPMモジュールを使用するためには、あなたは 機能のディレクトリにあるファイル.npmrcでNPMレジストリの資格情報 (認証トークン)を提供する必要があります。 npm ログインコマンドを使用してnpmにログインしたときに、ホームディレクトリに作成された という.npmrcファイルを単純にコピーすることができます。

の専用リポジトリを使用していない場合は、 機能のデプロイメント時間が長くなるため、.npmrcファイルを含めないでください。

出典:私は昨日と同じ、この問題に遭遇したhttps://cloud.google.com/functions/docs/writing/dependencies#using_private_modules