web-dev-qa-db-fra.com

TypeError: Impossible de lire la propriété «recherchée» de non définie:

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

22
dsenderling

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!

35
Rushabh Vora

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;
}
8
bempa

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!

1
aaronvargas

npm i -g firebase-tools @ latest

0
David Bmx

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;
0
Danny Thuering