//archivo útil
async function dbconnector(fastify, options) { try { await client.connect() console.log('db connected succesfully') fastify.decorate('db', { client }) } catch(err) { console.error(err) } } module.exports = fastifyPlugin(dbconnector)//archivo índice
const dbconnector = require('./utils/db') fastify.register(dbconnector)cada vez que intento hacer fastify.db muestra el siguiente error
La propiedad 'db' no existe en el tipo 'FastifyInstance<Server, IncomingMessage, ServerResponse, FastifyLoggerInstance> & PromiseLike
Con la forma en que Fastify ha configurado sus tipos, debe agregar los decoradores usted mismo a FastifyInstance . Puedes hacerlo así:
import { FastifyLoggerInstance, FastifyPluginAsync, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from 'fastify' declare module 'fastify' { export interface FastifyInstance< RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>, RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>, Logger = FastifyLoggerInstance > { db: FastifyPluginAsync; } } Debe indicarle a TypeScript que recoja este tipo de archivo si aún no lo ha configurado en su tsconfig.json . Un ejemplo de hacerlo sería este:
{ "compilerOptions": { // ... your other config "typeRoots": [ "types" ] }, // ... the rest of your config } Luego guarde la configuración en la raíz de su proyecto en types/index.d.ts .
Esto le dice al compilador TypeScript que ha definido sus propios tipos en ese archivo. Ahora debería funcionar extender FastifyInstance para incluir a su decorador.