J'ai déployé des fonctions avec Firebase avec succès toute la journée en apprenant à l'utiliser. J'essayais de voir ce qui s'est passé si j'ai initialisé un autre répertoire qui se déploie sur le même projet et que je n'ai eu aucun problème jusqu'à ce que je mette à jour ma version npm et maintenant j'obtiens "Une erreur inattendue s'est produite" chaque fois que j'essaie de déployer
J'ai essayé de mettre à jour l'autorisation npm en faisant de mon propre utilisateur le propriétaire des répertoires node_modules, bin et share. J'ai essayé de désinstaller et réinstaller les outils Firebase. J'ai également essayé de supprimer tous mes répertoires de fonctions actuels et d'initialiser un nouveau répertoire et de réinstaller mes dépendances là-bas.
Voici le journal de débogage
Dylans-MacBook-Pro-3:functions dsenderling$ firebase deploy --debug
[2019-07-03T18:04:35.526Z] ----------------------------------------------------------------------
[2019-07-03T18:04:35.528Z] Command: /usr/local/bin/node /usr/local/bin/firebase deploy --debug
[2019-07-03T18:04:35.529Z] CLI Version: 7.0.2
[2019-07-03T18:04:35.529Z] Platform: darwin
[2019-07-03T18:04:35.529Z] Node Version: v10.16.0
[2019-07-03T18:04:35.529Z] Time: Wed Jul 03 2019 13:04:35 GMT-0500 (Central Daylight Time)
[2019-07-03T18:04:35.529Z] ----------------------------------------------------------------------
[2019-07-03T18:04:35.537Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2019-07-03T18:04:35.537Z] > authorizing via signed-in user
[2019-07-03T18:04:35.537Z] [iam] checking project my-awesome-project-5a4e9 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2019-07-03T18:04:35.539Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/my-awesome-project-5a4e9:testIamPermissions
permissions=[cloudfunctions.functions.create, cloudfunctions.functions.delete, cloudfunctions.functions.get, cloudfunctions.functions.list, cloudfunctions.functions.update, cloudfunctions.operations.get, firebase.projects.get]
[2019-07-03T18:04:35.769Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Wed, 03 Jul 2019 18:04:35 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, server-timing=gfet4t7; dur=83, alt-svc=quic=":443"; ma=2592000; v="46,43,39", accept-ranges=none, transfer-encoding=chunked
[2019-07-03T18:04:37.033Z] TypeError: Cannot read property 'wanted' of undefined
at /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js:37:51
at process._tickCallback (internal/process/next_tick.js:68:7)
Error: An unexpected error has occurred.
Mon instinct me dit qu'il y a quelque chose qui ne va pas avec les outils Firebase ou mon SDK Firebase mais je ne peux pas comprendre quoi. Merci d'avance
Eu exactement le même problème, a commencé juste après la mise à jour de npm de 6.9.2 à 6.10.0.
J'ai fini par revenir à 6.9.2 (npm install -g [email protected]), et mes déploiements Firebase ont recommencé à fonctionner immédiatement.
Edit: les déploiements Firebase fonctionnent avec npm 6.10.1, sûr de mettre à jour maintenant!
Je pense que ce problème est dû à un correctif dans npm 6.10.0, voir https://github.com/npm/cli/pull/176 .
Une solution de contournement consiste à modifier /usr/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
(linux). Pour macOS et nvm, voir les commentaires ci-dessous.
de:
if (!output) {
return;
}
à:
if (!output || !output["firebase-functions"]) {
return;
}
Cela vient de commencer à m'arriver aussi ...
Il semble que npm
génère un résultat différent pour cette commande
npm outdated firebase-functions --json=true
// for me outputs {}\n
Et le script checkFirebaseSDKVersion.js
attend quelque chose comme ça (ce qu'il obtiendrait si vos fonctions Firebase étaient réellement obsolètes)
{
"current": "2.5.0",
"wanted": "2.5.0",
"latest": "3.0.2",
"location": "node_modules/some path /firebase-functions"
}
OU une sortie vierge ... plus probable dans votre cas
Ce que vous pouvez faire pour le "réparer"
Cela sera probablement corrigé très bientôt car cela affectera plus de gens ... pour l'instant modifier /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
ajoutez ceci pour tenir compte de la sortie vide mise à jour de {}\n
autour de la ligne 24
if (data && data.toString() !== "{}\n") {
output = JSON.parse(data.toString("utf8")); // existing Code!
}
Je ne sais pas comment le processus de mise à jour fonctionne pour npm, vous devrez donc peut-être revenir en arrière pour le mettre à jour une fois corrigé, mais je ne pense pas.
J'espère que cela pourra aider!
npm i -g firebase-tools @ latest
Eu le même problème avec [email protected] et [email protected].
TypeError: Cannot read property 'wanted' of undefined
at /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js:37:51
at process._tickCallback (internal/process/next_tick.js:68:7)
Corrigé en changeant dans /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
ligne # 37.
var wanted = (output["firebase-functions"] || {}).wanted;
var latest = (output["firebase-functions"] || {}).latest;