web-dev-qa-db-fra.com

Firebase: erreur d'analyse des déclencheurs: impossible de trouver la fonction cloud simple du module «demande-promesse»

Voulant réaliser une approche Firebase uniquement pour un site mobile, j'ai donc décidé de créer une passerelle API simple vers mon application, donc j'appelle un point de terminaison de fonction cloud au lieu d'appeler mon API externe et d'exposer mes clés API.

J'ai suivi l'exemple simple du bonjour au monde et ça allait.

Dès que j'ai ajouté le module request-promise comme indiqué dans les exemples Google (à partir de l'exemple de traduction et de raccourcissement d'URL), je ne peux pas aller de l'avant. car cela se pose.

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

testé avec le module "demande" avec les mêmes résultats.

Mon index.js est vraiment simple

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);
});

En ce moment sans const request = require ('request-promise'); or const request = require ('request'); il se déploie correctement et affiche l'url à appelé.

Je ne sais vraiment pas quoi faire, j'ai déjà testé la création d'un nouveau projet et je viens d'émettre ce

voici mon contenu 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
}

Est-ce difficile à implémenter cela dans les fonctions cloud de Firebase?

merci de votre aide.

10
neavilag

Si vous souhaitez utiliser un module npm dans votre fonction cloud, cd dans le répertoire des fonctions et exécutez la commande npm install request-promise ou quel que soit le nom du module. Cela ajoutera le module à votre fichier package.json. Ensuite, lorsque vous exécutez firebase deploy, le module sera disponible pour votre code exécuté dans le cloud de Google. Si vous essayez d'utiliser un module qui n'est pas répertorié dans package.json, votre code échouera.

20
Doug Stevenson

J'ai eu le même problème et l'ai corrigé en installant à la fois request et request-promise. Accédez au répertoire où vos fonctions vivent et s'exécutent:

npm install --save request request-promise

Le --save se chargera de mettre à jour votre package.json. Redéployez ensuite et cela devrait fonctionner.

12
satanas

Il n'est pas en mesure de trouver request-promise car il n'est pas installé. Il est distinct de Firebase, vous devez donc l'ajouter à votre package.json. J'ajouterais également la bibliothèque de requêtes.

Ajoutez les deux lignes ci-dessous dans vos dépendances et exécutez une installation npm.

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

Répertoire du premier changement
1) cd functions

Installer ensuite le pack npm
2) npm install request-promise // n'a pas fonctionné pour moi, mais vous pouvez l'essayer.
3) npm i child-process-promise // Ça a bien marché pour moi!
lien du package npm de processus enfant-promesse

Enfin, vous pouvez exécuter:
4) firebase deploy

1
Hanoj B