web-dev-qa-db-ja.com

Firebase:トリガーの解析エラー:モジュール 'request-promise'の単純なクラウド関数が見つかりません

モバイルサイトへのFirebaseのみのアプローチを実現したかったので、アプリへのシンプルなAPIゲートウェイを作成して、外部APIを呼び出す代わりにクラウド関数エンドポイントを呼び出し、APIキーを公開することにしました。

私は単純なhello worldの例に従って、大丈夫でした。

Googleのサンプルに記載されているように(translateおよびurl Shorteningの例から)request-promiseモジュールを追加するとすぐに、先に進むことができません。これが発生するためです。

Error parsing triggers: Cannot find module 'request-promise'

「リクエスト」モジュールでテストした結果は同じです。

私のindex.jsは本当にシンプルです

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const request = require('request-promise');

// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

exports.wxData = functions.https.onRequest((request, response) => {
 wwurl = "https://mycurrentendpoint.com/apicall.php?key=1234567890&lat="+request.query.lat+"&lon="+request.query.lon;   
 response.send(wwurl);
});

現在const request = require( 'request-promise');またはconst request = require( 'request');を使用せずにデプロイすると、URLが表示され、呼ばれた。

本当に何をすべきかわからない、私はすでに新しいプロジェクトの作成をテストし、これを発行するだけです

これは私のpackage.jsonコンテンツです:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "Shell": "firebase experimental:functions:Shell",
    "start": "npm run Shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "firebase-admin": "~5.4.2",
    "firebase-functions": "^0.7.1"
  },
  "private": true
}

これをFirebaseクラウド関数に実装するのは難しいですか?

ご協力いただきありがとうございます。

10
neavilag

Cloud Functionでnpmモジュールを使用する場合は、cdをfunctionsディレクトリに移動し、コマンドnpm install request-promiseまたはモジュールの名前が付けられているものを実行します。これにより、package.jsonファイルにモジュールが追加されます。次に、firebase deployを実行すると、Googleのクラウドで実行されているコードでモジュールを使用できるようになります。 package.jsonにリストされていないモジュールを使用しようとすると、コードは失敗します。

20
Doug Stevenson

同じ問題があり、requestrequest-promiseの両方をインストールして修正しました。関数が存在するディレクトリに移動して実行します。

npm install --save request request-promise

--saveは、package.jsonの更新を処理します。その後、再デプロイすると機能するはずです。

12
satanas

インストールされていないため、リクエストの約束を見つけることができません。これはfirebaseとは別なので、package.jsonに追加する必要があります。リクエストライブラリも追加します。

以下の2行を依存関係に追加し、npmインストールを実行します。

  "request": "^2.x",
  "request-promise": "^1.x"
5
Jeremiah

最初の変更ディレクトリ
1)cd functions

次にnpmパックをインストールします
2)npm install request-promise //私にはうまくいきませんでしたが、試すことができます。
3)npm i child-process-promise //うまくいきました!
child-process-promise npmパッケージリンク

最後に、実行できます:
4)firebase deploy

1
Hanoj B