Firebase-tools: No se puede leer la propiedad 'despliega' de indefinido

Creado en 1 may. 2019  ·  36Comentarios  ·  Fuente: firebase/firebase-tools

Información medioambiental


firebase-tools:
[email protected]


Plataforma:
Mac OS

Caso de prueba

MacOS, nodo 10.15.3, [email protected]

pasos para reproducir

Cree dos sitios de alojamiento en firebase console.
correr
'firebase target: apply hosting dev firebase-hosting-id'
correr
'firebase deploy --only hosting: dev '

Comportamiento esperado

Implementación exitosa

Comportamiento real

[info] Project Console: https://console.firebase.google.com/project/project-name/overview
[debug] [2019-05-01T19:12:12.726Z] TypeError: Cannot read property 'deploys' of undefined
    at /Users/reeda/.nvm/versions/node/v10.15.3/lib/node_modules/firebase-tools/lib/deploy/index.js:88:36
    at process._tickCallback (internal/process/next_tick.js:68:7)
[error] 
[error] Error: An unexpected error has occurred.
hosting bug

Comentario más útil

Resolví el mío asegurándome de:

  1. .firebaserc debe tener targets.<PROJECT_ID>.hosting.<TARGET_NAME> = [ "<HOST_ID" ]
{
  "projects": {
    "default": "my-project-id"
  },
  "targets": {
    "my-project-id": {
      "hosting": {
        "my-blog": [
          "my-blog-host-id"
        ]
      }
    }
  }
}

La parte targets se puede generar usando el comando firebase target:apply hosting my-blog my-blog-host-id

  1. firebase.json debe tener hosting como una matriz, y su elemento debe tener target: <TARGET_NAME>
{
  "hosting": [{
    "target": "my-blog",
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }]
}

La parte importante es hacer hosting una matriz y agregar target a su elemento.

Todos 36 comentarios

Recientemente, ha habido algunos ajustes en este flujo. Este error proviene de (en la fuente): https://github.com/firebase/firebase-tools/blob/master/src/deploy/index.js#L111

@Memeriaj, ¿puedes echar un vistazo, ya que has estado lidiando con esto últimamente?

Creo que puedo saber lo que está pasando aquí. ¿Su archivo de configuración firebase.json tiene "target": "dev" en él? Creo que filtramos todas las configuraciones que no coincidían con hosintg:dev y nos quedamos con una matriz vacía. Luego, realizamos todos los pasos de implementación para esa matriz vacía, sin hacer nada de manera efectiva. Luego, al final, mostramos el enlace de la consola y el enlace a su sitio de alojamiento recién implementado, que es donde aparece este error porque en realidad no implementamos nada.

Definitivamente necesitamos un error adecuado en este caso que explique que no estamos implementando nada.

(no relacionado con el problema: en general, desea que el cambio de nivel de su entorno se realice a nivel de proyecto de Firebase y no en diferentes sitios de alojamiento dentro del mismo proyecto (aunque es posible que tenga un sitio para un blog, un sitio para una aplicación web, y un sitio para sus documentos que se encuentran en el mismo entorno en diferentes sitios de alojamiento en el mismo proyecto). Esto se debe principalmente a que elementos como Firebase Auth tienen solo una instancia dentro de un proyecto. Lo ideal es que su archivo firebase.json sea configurado de tal manera que pueda hacer algo como firebase use dev , firebase deploy , verificar dev para asegurarse de que todo funcione, firebase use staging , firebase deploy , ...)

{ "firestore": { "rules": "firestore.rules", "indexes": "firestore.indexes.json" }, "hosting": { "public": "build", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites": [ { "source": "**", "destination": "/index.html" } ] }, "functions": { "predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ] } }

Creo que la configuración que mencionas está en el archivo firebase bashrc y no en el archivo firebase json.

En la sección de alojamiento del archivo firebase.json, debe tener "target": "dev" firebase deploy --only hosting:dev para que funcione --only funciona como un filtro y sin el campo target en su configuración de Hosting, entonces la CLI no está implementando nada (lo que debería ser un error con un mensaje útil, pero en este momento simplemente acepta ciegamente eso).

Lo siento, no está claro en qué lugar del json colocar el campo de destino, ¿pondría esto en la raíz del json (no funcionó) o debería estar en la raíz del alojamiento (tampoco funcionó para mí).

También mi archivo firebaserc, hace referencia a mi proyecto raíz, pero no tiene ninguna referencia a mi segundo sitio de alojamiento, por lo que no estoy seguro de cómo la herramienta CLI podrá entender dónde implementar.

Debería ir a la sección Alojamiento de su archivo firebase.json para que se vea así:

{
// ...
  "hosting": [{ // Can be an array and have multiple configs, or an object if you've only got a single config
    "target": "blog",
    "public": "build/blog"
    // ...
  }],
// ...
}

Esta página de documentos ofrece más detalles sobre cada paso y habla un poco sobre por qué podría usar destinos y varios sitios también.

Con firebase target:apply hosting dev firebase-hosting-id entonces firebase-hosting-id debería ser el nombre del sitio en el que planea implementar. Esto configura el destino en el proyecto en el que se encuentra actualmente en la CLI, que es del comando firebase use . Pero quizás entendí mal lo que estás tratando de lograr.

Gracias, parece que estoy avanzando, pero ahora obtengo una entidad de error 404 no encontrada.
Entonces, digamos que mi proyecto en firebase es reedy-1 y mi objetivo es reedy-1-api
Cuando agrego mi objetivo en el alojamiento como reedy-1-api, cuando intento implementarlo, se queja de que no se encontró la entidad.
Puedo ver en mi archivo firebaserc, debajo de objetivos

"targets": {
   "reedy-1": {
      "hosting": {
         "dev-api": [
           "reedy-1-api"
         ]
      }
   }
}

Ese fragmento de su archivo .firebaserc me parece correcto.

Posibles problemas (probablemente los haya verificado, pero los enumero en caso de que otras personas se encuentren con esto más adelante):

  • Asegúrese de que está utilizando el proyecto adecuado con firebase use
  • Asegúrese de que el ID del proyecto sea correcto (debe hacerlo a través de la lista de proyectos en firebase use --add )
  • Asegúrese de que el nombre del sitio sea correcto (se encuentra fácilmente a través de <site-name>.firebaseapp.com )

Si intenta implementar con el indicador de depuración, ¿en qué parte está devolviendo el 404? Sospecho que vendría de POST https://firebasehosting.googleapis.com/v1beta1/sites/<site-name>/versions ya que esa es la primera solicitud de la implementación de Hosting real. Si ese es el caso, creo que hay algún problema con el nombre del sitio que ha configurado como objetivo. Si se trata de una solicitud anterior a esa, mi mejor suposición es que hay algo en su proyecto.

Ok, me las arreglé para averiguar qué estaba pasando.
También necesita un mensaje de error mejor para esto, por lo que si no está en llamas o por encima, el mensaje de error es un 404, no es obvio que no pueda implementar debido a mi plan de precios.
Después de actualizar, boom, todo está funcionando.
Gracias por la ayuda, feliz de haber resuelto este problema.

Espera. ¿Necesitaba actualizar a Blaze para que su implementación funcionara? ¿Qué sucede porque aún no ha creado el nuevo sitio de alojamiento y necesita actualizar para hacerlo? ¿O fue que anteriormente se actualizó a Blaze, creó un segundo sitio de alojamiento, degradó su plan de facturación y luego intentó implementar?

Además, ¿sabe qué solicitud arroja ese error? Porque tiene razón, ese error no es útil en absoluto y quiero rastrear de dónde vino para poder tener una guía sobre qué hacer en lugar de un texto 404 genérico.

Sí, es cierto, es un poco confuso, estoy bastante seguro de que creé el segundo sitio en el nivel gratuito, luego tuve problemas de implementación y pensé que podría ser eso, así que actualicé. Cuando me di cuenta de que necesitaba plantear un problema en github, bajé de categoría, cuando hice esto, comenzaron a suceder cosas extrañas en la consola web de firebase. Aparecía el segundo sitio web de alojamiento, pero cuando hacía clic en él, mostraba una pantalla vacía.
Después de recibir su apoyo, intenté implementar, mostró un 404 en la implementación. Así que pensé en actualizarme de nuevo a Blaze, y como por arte de magia funcionó.

teniendo el mismo problema

@isevcik de verdad? Estaba bastante seguro de que solucionamos ese problema (y realmente debería haber cerrado esto). ¿Hizo algo similar al actualizar su proyecto y luego degradarlo?

Probablemente debería enviar un correo electrónico al soporte para que podamos obtener los detalles de su proyecto y solucionarlo. Debe asegurarse de mencionar este problema de GitHub y de mí para que sepan a quién enviarlo.

@isevcik Recibí este mismo error y pensé que tenía el mismo problema, pero resultó ser un error tipográfico en el ID del proyecto en .firebaserc.
Usé este comando para agregar estos objetivos en lugar de hacerlo manualmente y funcionó.
Nota: También debe agregar el objetivo a firebase.json.

firebase target: aplica el tipo target-name resource-name

https://firebase.google.com/docs/cli/targets

Hola, mismo problema:

[debug] [2019-08-09T17:34:19.322Z] TypeError: Cannot read property 'deploys' of undefined
    at /Users/kevinliu/.npm-global/lib/node_modules/firebase-tools/lib/deploy/index.js:84:36
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
[error] 
[error] Error: An unexpected error has occurred.

index.js :

   if (deployedHosting) {
            _.each(context.hosting.deploys, function (deploy) {
                logger.info(clc.bold("Hosting URL:"), utils.addSubdomain(api.hostingOrigin, deploy.site));
            });
            const versionNames = context.hosting.deploys.map((deploy) => deploy.version);
            return { hosting: versionNames.length === 1 ? versionNames[0] : versionNames };
        }

@hpoit También recibo ese error. ¿Lo resolviste? Si es así, ¿qué cambió?

[debug] [2019-08-16T18:44:01.159Z] TypeError: Cannot read property 'deploys' of undefined
    at C:\Users\Kraken\AppData\Roaming\npm\node_modules\firebase-tools\lib\deploy\index.js:84:36
    at process._tickCallback (internal/process/next_tick.js:68:7)
[error] 
[error] Error: An unexpected error has occurred.

¿Se ha resuelto esto para cualquiera que se haya puesto en contacto con el soporte como sugirió @Memeriaj ? Si es así, ¿podrían publicarse los detalles aquí para referencia futura?

@MaxInertia sí lo resolví,

Creo que arroja este error cuando no puede encontrar el objetivo de implementación en su configuración. Verificaría su configuración en los dos archivos de configuración de base de fuego. Publique el contenido aquí si desea una segunda opinión.

Lo mismo aquí, cuando se intentó implementar un sitio web secundario con firebase 7.3.1

En realidad, el error estaba en firebase.json, he especificado un "objetivo" incorrecto

Pude resolver este problema creando un nuevo destino de implementación con la ayuda de esta guía:

https://firebase.google.com/docs/hosting/multisites?authuser=1#set_up_deploy_targets

Emití un comando:

firebase target:apply hosting blog myapp

y agregué target clave a mi firebase.json

{
  "hosting": {
    "target": "myapp",
    ...
  }
  ...
}

editar: Entré en este problema cuando configuré mi primer alojamiento en mi nuevo proyecto de base de fuego.

Yo también pude resolverlo. Mi problema fue que cuando creé mi destino de implementación usando el comando descrito en los documentos: $ firebase target: apply hosting target-name resource-name , había puesto mi proyecto principal como el nombre del recurso. Cambié eso en el archivo .firebaserc y ejecuté el comando firebase deploy y funcionó. Ejemplo a continuación:

"targets": {
    "firebase-project-name": {
      "hosting": {
        "admin": [
          "admin-project"
        ]
      }
    }
  }

Hola, también estoy enfrentando el mismo problema, ligeramente de una manera diferente (para dominio agregado personalizado)

Puedo implementar en varios alojamientos con diferentes nombres de destino. pero cuando trato de implementar en mi dominio agregado personalizado. Recibo Error: Error HTTP: 404, No se encontró la entidad solicitada.

Mi dominio personalizado es 3dprinter.froozen.in (agregado a firebase dentro del alojamiento predeterminado al hacer clic en el botón Agregar dominio personalizado)
Mi dominio personalizado se agrega dentro del dominio predeterminado de mi proyecto.
Amablemente ayúdame a seguir adelante

Necesitaremos registros de depuración que muestren la llamada exacta que falla para poder ayudar
diagnosticar el problema.

El sábado 4 de enero de 2020 a las 12:52 a.m., nandha [email protected] escribió:

Hola, también estoy enfrentando el mismo problema, ligeramente de una manera diferente (para
dominio agregado)

Puedo implementar en varios alojamientos con diferentes nombres de destino. pero
cuando intento implementar en mi dominio agregado personalizado. Me sale un error: HTTPError: 404, no se encontró la entidad solicitada.

Mi dominio personalizado es 3dprinter.froozen.in (agregado a firebase dentro
alojamiento predeterminado haciendo clic en el botón Agregar dominio personalizado)
Mi dominio personalizado se agrega dentro del dominio predeterminado de mi proyecto.
Amablemente ayúdame a seguir adelante

-
Recibes esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/1232?email_source=notifications&email_token=AAAAH7SNCPUEIMIWCDHK6CDQ4BE4JA5CNFSM4HJWK5J2YY3PNVWWK3TUL52HS4DFVREXH63VWWK3TUL52HS4DFVREXG63VMVBW5 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AAAAH7V26G3YF6Q7FYDP5QTQ4BE4JANCNFSM4HJWK5JQ
.

Hola @mbleigh ,

Tengo mi problema resuelto

  1. El dominio no estaba completamente vinculado
  2. Firebase.json de hosting se modificó según la documentación
    Cuando ambos terminaron, funcionó correctamente como se esperaba

Si no hay más consultas podemos cerrar este problema.
En caso de tener consultas comente a continuación

Mi problema con "Error: Error HTTP: 404, la entidad solicitada no se encontró" intenté usar

''
"objetivos": {
"nombre del proyecto": {
"hosting": {
"dev": [
"dev.site.com"
],
"prod": [
"sitio.com"
]
}
}
}


istead of

 ```
"targets": {
    "projectname": {
      "hosting": {
        "dev": [
          "dev-site-name"
        ],
        "prod": [
          "ez-site-name"
        ]
      }
    }
  }

Resolví el mío asegurándome de:

  1. .firebaserc debe tener targets.<PROJECT_ID>.hosting.<TARGET_NAME> = [ "<HOST_ID" ]
{
  "projects": {
    "default": "my-project-id"
  },
  "targets": {
    "my-project-id": {
      "hosting": {
        "my-blog": [
          "my-blog-host-id"
        ]
      }
    }
  }
}

La parte targets se puede generar usando el comando firebase target:apply hosting my-blog my-blog-host-id

  1. firebase.json debe tener hosting como una matriz, y su elemento debe tener target: <TARGET_NAME>
{
  "hosting": [{
    "target": "my-blog",
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }]
}

La parte importante es hacer hosting una matriz y agregar target a su elemento.

También me golpeó esto hoy, ¡convertir firebase.json hosting en una matriz es realmente doloroso!

Ahora necesito duplicar cada entrada (incluso si es lo mismo, excepto el objetivo), que tiene muchas configuraciones de encabezados para todos los entornos, de repente, esa es la configuración 4x json que necesito administrar.

De todos modos, ¿reutilizar el alojamiento predeterminado de firebase json?

Varios sitios en el mismo proyecto no están pensados ​​para ser usados ​​como "entornos" - si tienes un sitio de "preparación", "desarrollo", etc., esos deben ser sitios en diferentes proyectos y el comando firebase use puede ayudar cambia entre ellos / despliega a ellos de forma independiente.

Si eso no es lo que está haciendo, ¿puede ayudarme a entender por qué la configuración firebase.json para cada uno de los sitios de su proyecto es idéntica?

Bueno, eso lo resume bastante bien, actualmente tenemos 4 env diferentes en diferentes proyectos de GCP, sin embargo, necesitábamos implementar un env temporal (que incluye otras partes, no solo el alojamiento de base de fuego), nos pareció mucho más simple reutilizar los existentes. Proyecto de GCP durante uno o dos meses, en lugar de agregar uno nuevo.

La única forma de lograr este cajero automático es duplicando la configuración de alojamiento firebase.json 5 veces y agregando un objetivo único a cada configuración.

Supongo que de dónde proviene la confusión, es si tiene una configuración de alojamiento predeterminada, la expectativa sería que funcione con cualquier objetivo o proyecto, pero supongo que ese es mi malentendido sobre cómo se usa en diferentes proyectos, en comparación con proyecto + objetivo.

Obviamente, todavía puede hacer que funcione, solo tomó un tiempo comprender por qué apareció este error.
2020-06-22T17:20:39.837Z] TypeError: Cannot read property 'deploys' of undefined

El mensaje de error es definitivamente malo de cualquier manera, y FWIW tenemos una mejor solución para "vistas previas efímeras" en desarrollo ahora 😄

Solo para agregar a la "solución de matriz", tenemos dos sitios implementados, pude apuntar al sitio correcto después de cambiar los objetivos a una matriz:

{ "hosting": [ { "target": "web", "public": "public", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ { "source": "**", "destination": "/index.html" } ] }, { "target": "admin", "public": "build", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ { "source": "**", "destination": "/index.html" } ] } ] }

Pero luego el "administrador" devolvió una página en blanco, ya que estamos usando React, el truco consistía en que el público apuntara a Build.
"public": "build",

Me encuentro con este problema y todo está correcto de acuerdo con lo anterior y los documentos. Sin embargo, sigo recibiendo el error. No importa qué objetivo use, no parece respetar eso, aunque todos los archivos y configuraciones se informan como correctos. ¿Hay algo más que no se haya cubierto anteriormente?

  1. ejecutar: firebase target:apply hosting second-project-id second-project-id

  2. luego abra el archivo .firebaserc y asegúrese de que tenga el siguiente aspecto
    `{
    "objetivos": {

    "main-project-id": {
    "hosting": {
    "second-project-id": [
    "second-project-id"
    ]
    }
    }
    }
    } `

  3. luego abra el archivo firebase.json y asegúrese de que tenga lo siguiente
    "target": "second-project-id",

Hmm, no sé exactamente qué hice para que funcione, pero actualmente funciona con este .firebaserc :

{
  "projects": {
    "default": "mainProjectId"
  },
  "targets": {
    "mainProjectId": {
      "hosting": {
        "production": [
          "mainProjectId"
        ],
        "staging": [
          "secondProjectId"
        ]
      }
    }
  }
}
¿Fue útil esta página
0 / 5 - 0 calificaciones