web-dev-qa-db-ja.com

エラー:HTTPエラー400、要求にエラーがあります。 Firebase Firestore Cloudの機能

コマンドfirebase deployを実行すると、次のエラーが表示されます。

機能を展開する

i機能:必要なAPIが有効になっていることを確認する...

i runtimeconfig:必要なAPIが有効になっていることを確認します...

✔runtimeconfig:必要なすべてのAPIが有効になっています

✔機能:必要なすべてのAPIが有効になっています

i機能:アップロード用の機能ディレクトリの準備...

i関数:アップロード用のパッケージ化された関数(4.04 KB)

✔機能:機能フォルダーが正常にアップロードされました

リリースプロセスを開始しています(数分かかる場合があります)...

i関数:関数followerNotificationの作成...

⚠functions:function followerNotificationの作成に失敗しました

機能:HTTPエラー:400、リクエストにエラーがあります

⚠functions:1つの関数を展開できませんでした。

機能のデプロイにエラーがありました。他の機能(データベースなど)の展開を続行するには、次を実行します:firebase deploy --except functions

エラー:関数は適切にデプロイされませんでした。

問題がありますか? firebase deploy --helpをお試しください

他のすべては問題なく動作します。 Firebase Firestoreで何かを作成しようとしたときのみ。

29
Loyal

これは私にも起こっていたので、2番目のレベルでは、firestoreはドキュメントのみを許可し、コレクションは許可しないことに気付きました。

私はこの道を聞こうとしていました:

/collection/document/{wildcard}

あなたは次のようなことをすることができます

/collection/{wildcard}

または

/collection/document/collection/{wildcard}
70
Ivan

私もこの問題を抱えていました。私の場合、トリガーパスにドキュメントパスの末尾のスラッシュが含まれていたためです。

だから変更:

functions.firestore
  .document('some_path/{pushId}/')

に:

functions.firestore
  .document('some_path/{pushId}')

私のためにそれを修正しました。これはさまざまな問題によって引き起こされているようで、firebase cliはその理由を説明するのに良い仕事をしていません。

7
adamduren

問題は、次のようなドキュメントではなく、コレクションのみを参照することです。

exports.myFunctionName = functions.firestore
      .document('users/marie').onWrite((event) => {
        // ... Your code here
      });

次のようにドキュメントを参照する必要があります。

exports.myFunctionName = functions.firestore
  .document('users/marie').onWrite((event) => {
    // ... Your code here
  });

次のようなワイルドカードを使用することもできます。

exports.myFunctionName = functions.firestore
  .document('users/{userId}').onWrite((event) => {
    // ... Your code here
  });

ここで説明されています: https://firebase.google.com/docs/functions/firestore-events

私が助けてくれることを願っています

5
Raphael Jenni

この問題は、おそらく関数名の長さが原因でした。

したがって、名前が次の場合:

myFunctionsFromWorksWithCustumersTiggersTests

次のような短い名前に変更します。

WorkWithCustumers

お役に立てば幸いです。

Okejこれはあなたが見る必要があるものです。

あなたが持っているので

exports.yourFunctionName = functions.firestore.document

見る必要があるのは.document

あなたのパス[〜#〜] must [〜#〜]コレクションではなくドキュメントを指します。

そのため、これは動作しません

/level1/{level1Id}/level2 <-コレクションを指します

これ動作します

/level1/{level1Id}/level2/{level2Id}

クラウド関数は、documentactionがある場合に検索します

これが誰にも役立つことを願っています

1
Cyrus Zei

関数名を次のように変更するまで、同じエラーが発生していました

create_template_

create_new_template

関数名の最後にある「_」(アンダースコア)がこのエラーを引き起こした可能性があります。

1
SHUBHAM SINGH

エクスポート関数名の先頭にアンダースコアがあるため、これを経験しました。これを試して自分でテストできます:

exports._someLongNameWithUnderscore= functions.auth.user().onCreate(user => {
  return true;
});

exports.someLongNameWithoutUnderscore= functions.auth.user().onCreate(user => {
  return true;
});

exports.shortName= functions.auth.user().onCreate(user => {
  return true;
});

開始または終了にアンダースコアがあるものはHTTP:400で失敗し、他のものはデプロイされます。

0
sanjsanj

Cloud pub/subをリッスンする関数を公開しようとしたときに、数字で始まる同じエラーが発生しました。

exports.nightly_pruning = functions.pubsub.topic('24hr-tick').onPublish((event) => { 
    ... 
});

名前を変更するだけで修正しました:

exports.nightly_pruning = functions.pubsub.topic('nightly-tick').onPublish((event) => { 
    ... 
});

(上記のニコライ・ヘーゲルスタッドに感謝します。コメントする評判はありません。)

0
Aidan Davis

これは、間違ったNodeバージョンを使用している場合にも発生する可能性があります。消えた。

0
Mark Flegg

リンターがリスナー宣言で改行を拒否することも指摘したかっただけです。

exporst.myFunc = functions.firestore
.document('collection/{uid}')
.onEvent(...)

リンターはあまり役に立たず、ドキュメントでカバーされていません(通常どおり)

0
Cyrus Talladen

同じエラーメッセージに関する私の問題は、Cloud Functionsのpubsubは数字で始まる名前のトピックをサポートしていないように見えることでした。

0