web-dev-qa-db-ja.com

Cloud Functionsプロジェクトの新しいESLintエラーを解決するにはどうすればよいですか?

別の日、Firebaseに関する別の質問:

私はFirebase/node.js/npmに比較的慣れていません...

現在、大学のプロジェクト用にFirebaseを使用してモバイルアプリのバックエンドを構築しようとしています。 node.jsとテストではなく書き込み関数をローカルで使用し、FirebaseCLIと「firebasedeploy」を使用して関数をデプロイします。私が1時間前のように働き始めるまで、すべてがうまくいきました。コードに小さなエラーがあり、簡単に修正できました。同じ「デプロイサイクル」で、Firebase CLIは、firebase-toolsの利用可能なアップデートを表示して、使用を提案しています。

npm install -g firebase-tools

これが私がしたことであり、私の悲劇が始まった場所です。その後、CLIはアンインストール/再インストールすることをお勧めします

    npm uninstall -g @google-cloud/functions-emulator
    npm install -g @google-cloud/functions-emulator

だから私はしました。次に、(ローカルのindex.jsから)関数をデプロイしようとしましたが、次の警告が表示されました。

エラー:Firebase構成変数は使用できません。FirebaseCLIの最新バージョンを使用してこの関数をデプロイしてください

FirebaseCLIを更新するためにnpm install -g firebase-toolsを使用しましたが、何も変更されていません。

古いプロジェクトをバックアップして新しいフォルダーで新しいプロジェクトを初期化し、それを既存のFB-Projectに接続して、古いindex.jsのコンテンツをコピーして貼り付けるのは良い考えだと思いました。新しいプロジェクトフォルダにあります。この新しいプロジェクトをデプロイしようとすると、次のようなコードに関する大量のエラーと警告が表示されました。

18:4   error    Expected catch() or return                  promise/catch-or-return

以前はコード化された関数が正常に機能していましたが、さらに多くの機能がありました。

そのため、古いプロジェクトでエラーを修正するのがおそらく最善であると判断しました。

この場合に何をすべきか、またはこれらの不思議なfirebase構成変数をどこで見つけるかについて誰かが推奨していますか?オンラインで問題の解決策を見つけることができませんでした。どうすればいいのかわからず、大学からのサポートもありませんので、どんなサポートもよろしくお願いします...

7
nnige

設定変数に関するエラーメッセージで、FirebaseCLIを更新するように求められました。そして、それは問題ありません。 (@ google-cloud/Functions-emulatorに関する警告を無視することもできます。)

新しいプロジェクトを作成したときは、プロジェクトの作成プロセス中にESLintを使用することを選択した可能性があります。プロンプトは言ったでしょう:

ESLintを使用して、考えられるバグをキャッチし、スタイルを適用しますか?

これはバージョン3.17.0以降のFirebaseCLIの非常に新しい機能であり、以前はESLintを使用していなかった可能性があります。

表示されているこれらの新しいエラーは、コードに潜在的な問題があることを示すESLintです。 Firebaseチームは、コードの問題が少なくなるように、これらの警告とエラーのアドバイスを受けて解決することを強くお勧めします。

現在ESLintを使用できない場合は、プロジェクトを再作成できますが、プロンプトが表示されたらESLintを使用するにはnotを選択します。または、firebase.jsonファイルを編集し、lintコマンドを実行するpredeployスクリプトを削除することで、現在のプロジェクトで無効にすることができます。

12
Doug Stevenson

そこには2つのことが起こっているようです。

1)最新のfirebase-functionsがない可能性があり、それが構成変数に関するエラーの原因です。再度デプロイする前に、functionsフォルダーで以下を実行してみてください。

npm i --save [email protected]
npm i --save [email protected]

2)「予期されるcatch()またはreturn」はリンターエラーであり、promiseチェーンを返さないことを意味します。 (これにより、デプロイされた関数でタイムアウトエラーが発生します)。したがって、次のようにコードを変更する必要があります。

return asynchronousTask().then(function() {
 ....
   return someValue;
});
1
laurenzlong