node.js - TypeError: no se puede leer la propiedad ''wanted'' de undefined:
firebase google-cloud-functions (3)
He estado implementando funciones con firebase con éxito todo el día aprendiendo cómo usarlo. Intenté ver qué sucedió si inicialicé otro directorio que se implementa en el mismo proyecto y no tuve problemas hasta que actualicé mi versión npm y ahora aparece "Se ha producido un error inesperado" cada vez que intento implementarlo.
He intentado actualizar el permiso npm al hacer que mi propio usuario sea el propietario de los directorios node_modules, bin y share. He intentado desinstalar y reinstalar firebase-tools. También he intentado eliminar todos mis directorios de funciones actuales e inicializar un directorio nuevo y reinstalar mis dependencias allí.
Aquí está el registro de depuración
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.
Mi instinto me dice que hay algo mal con las herramientas de base de fuego o mi SDK de base de fuego, pero no puedo averiguar qué. Gracias por adelantado
Creo que este problema se debe a una solución en npm 6.10.0, consulte https://github.com/npm/cli/pull/176 .
Una solución es modificar
/usr/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
(linux).
Para macOS y nvm, vea los comentarios a continuación.
desde:
if (!output) {
return;
}
a:
if (!output || !output["firebase-functions"]) {
return;
}
Esto solo me empezó a pasar a mí también ...
Parece que cualquiera de los
npm
está
npm
un resultado diferente para este comando
npm outdated firebase-functions --json=true
// for me outputs {}/n
Y la secuencia de comandos
checkFirebaseSDKVersion.js
está esperando algo como esto (que se obtendría si sus funciones de base de fuego estuvieran realmente desactualizadas)
{
"current": "2.5.0",
"wanted": "2.5.0",
"latest": "3.0.2",
"location": "node_modules/some path /firebase-functions"
}
O una salida en blanco ... más probable en su caso
¿Qué puedes hacer para ''arreglarlo''?
Probablemente esto se solucionará muy pronto cuando comience a afectar a más personas ... por ahora, modifique
/usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js
agregue esto para tener en cuenta la salida vacía actualizada de
{}/n
alrededor de la línea 24
if (data && data.toString() !== "{}/n") {
output = JSON.parse(data.toString("utf8")); // existing Code!
}
No estoy seguro de cómo funciona el proceso de actualización para npm, por lo que es posible que tenga que revertirlo para actualizarlo cuando se solucione, pero no lo creo.
¡Espero que ayude!
Tuvo el mismo problema, comenzó justo después de actualizar npm de 6.9.2 a 6.10.0.
Terminé de volver a la versión anterior a 6.9.2 (npm install -g [email protected]), y mis implementaciones de base de fuego comenzaron a funcionar de nuevo, de inmediato.