firebase-tools:
[email protected]
Plataforma:
Mac OS
MacOS, nodo 10.15.3, [email protected]
Cree dos sitios de alojamiento en firebase console.
correr
'firebase target: apply hosting dev firebase-hosting-id'
correr
'firebase deploy --only hosting: dev '
Implementación exitosa
[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.
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):
firebase use
firebase use --add
)<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
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
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:
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
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?
ejecutar: firebase target:apply hosting second-project-id second-project-id
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"
]
}
}
}
} `
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"
]
}
}
}
}
Comentario más útil
Resolví el mío asegurándome de:
targets.<PROJECT_ID>.hosting.<TARGET_NAME> = [ "<HOST_ID" ]
La parte
targets
se puede generar usando el comandofirebase target:apply hosting my-blog my-blog-host-id
hosting
como una matriz, y su elemento debe tenertarget: <TARGET_NAME>
La parte importante es hacer
hosting
una matriz y agregartarget
a su elemento.