Quiero exportar el servidor Fastify a las funciones de la nube de firebase (para poder ejecutarlas a través de emuladores), el siguiente es mi código:
import { ValidationPipe } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { FastifyAdapter, NestFastifyApplication, } from '@nestjs/platform-fastify'; import { AppModule } from './app.module'; import * as functions from 'firebase-functions'; const http = require('http') const Fastify = require('fastify') let handleRequest = null const serverFactory = (handler, opts) => { handleRequest = handler return http.createServer() } const fastify = Fastify({serverFactory,}); export const createFastifyServer = async (fastifyInstance) => { const app = await NestFactory.create<NestFastifyApplication>( AppModule, new FastifyAdapter() ); app.useGlobalPipes(new ValidationPipe()); await app.init() } createFastifyServer(fastify) .then(() => console.log('Nest Ready')) .catch((err) => console.error('Nest broken', err)); exports.app = functions.https.onRequest((req, res) => { fastify.ready((err) => { if (err) throw err handleRequest(req, res) }) })
Y cuando trato de acceder a las funciones exportadas desde la ruta, por ejemplo, http://localhost:port/firebase project/regionapp/app
después de ejecutar los emuladores locales, obtengo una excepción de ruta no encontrada, por ejemplo {"message":"Route GET:/ not found","error":"Not Found","statusCode":404}
.
Soy consciente de usar get/post con fastify directamente, por ejemplo
fastify.get('/', (req, reply) => { console.log('Hello World') reply.send({ hello: 'world' }) })
pero quiero exportar mi aplicación de servidor express ya creada (creada a través de NestFastifyApplication) como fastify, en express simplemente export const api: functions.HttpsFunction = firebase.https.onRequest(express_server);
pero ¿cuál es la alternativa para fastify? Gracias.