índice.js
público
Hace horas que intento redirigir una API (usando funciones en la nube) a mi página html (dentro de la carpeta pública).
router.get('/finishOnboarding', async (req,res) => { let content = path.resolve('../public/success.html') res.sendFile(content); });Probé varias cosas.
coloque la carpeta pública fuera de la carpeta de funciones, luego noté que necesito anidarla dentro porque al implementarla se debe acceder a ella en la nube de Google
usando __dirname + ruta absoluta
No importa lo que haga, cuando reviso los registros de funciones, siempre obtengo el mismo error:
Error: ENOENT: no such file or directory, stat '/public/success.html'Si estoy tratando de redirigir usando
path.join(__dirname, '/public/success.html');Obtuve :
Error: ENOENT: no such file or directory, stat '/workspace/routes/public/success.html'firebase.json se configura según sea necesario
{ "hosting": { "public": "functions/public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites": [ { "source": "**", "function": "app" } ] }, "emulators": { "hosting": { "port": 5003 } } }¿De dónde viene el problema? Estoy seguro de que es un problema simple con los caminos, pero estoy muy confundido ...
Cloud Functions y Hosting se ejecutan en una infraestructura completamente separada, por lo que no puede comunicarse de uno a otro con una llamada de tipo de path .
Si desea redirigir al usuario, deberá enviar una instrucción de redirección en la respuesta. Hacer eso significa que el navegador recibirá la instrucción de solicitar una URL diferente, y Firebase Hosting atenderá esa solicitud.
Si desea volver a escribir la respuesta (para servir HTML desde una ubicación diferente dentro de su código), deberá tener esos archivos dentro (o debajo) de la carpeta de functions :
índice.js
público