typescript - Fastify: AvvioError [Error]: Plugin tidak memulai tepat waktu
Saya saat ini sedang mengerjakan proyek typescript/fastify (yang menurut saya adalah pilihan stack yang buruk). Saya mendapatkan error ini saat mendaftarkan rute:
/home/20015007/Documents/Ecole/EcoWeb/econos-back/node_modules/avvio/plugin.js:122
const err = new AVV_ERR_READY_TIMEOUT(name)
^
AvvioError [Error]: Plugin did not start in time: 'declareHealthRoutes'. You may have forgotten to call 'done' function or to resolve a Promise
at Timeout._onTimeout (/home/20015007/Documents/Ecole/EcoWeb/econos-back/node_modules/avvio/plugin.js:122:19)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
code: 'AVV_ERR_READY_TIMEOUT',
fn: [Function: declareHealthRoutes]
}
Berikut adalah kode saya:
routes.ts:
import { declareArticleRoutes } from "./articlesRoutes";
import { declareContactRoutes } from "./contactRoutes";
import { declareAdminRoutes } from "./adminRoutes";
import { verifyJWT} from "../services/tokenService";
import { declareHealthRoutes } from "./healthRoutes";
function declareRoutes(fastify: FastifyInstance) {
fastify.register(declareArticleRoutes);
fastify.register(declareContactRoutes);
fastify.register(declareHealthRoutes);
fastify.register(declareAdminRoutes);
}
nyatakanRuteKesehatan:
import {FastifyInstance, FastifyReply, FastifyRequest} from "fastify";
const healthSchema = {
response: {
200: {}
}
};
function declareHealthRoutes(fastify: FastifyInstance): FastifyInstance {
fastify.route({
method: 'GET',
url: '/health2',
schema: healthSchema,
handler: (req: FastifyRequest, reply: FastifyReply) => {
return reply.status(200).send({});
},
});
return fastify
}
export { declareHealthRoutes };
Semua rute saya dideklarasikan dengan cara sederhana ini.
Hanya ingin mengatakan: Saya tahu bagaimana membuat kode ini bekerja (declareHealthRoutes(fastify) memang mendaftarkan rute saya) tetapi saya ingin memahami mengapa ini tidak bekerja dan apakah saya menggunakan register dengan cara yang salah.
Setiap bantuan sangat dihargai!
Jawaban #1
Fungsi declareHealthRoutes harus async atau memanggil callback:
async function declareHealthRoutes(fastify) { }
// or
function declareHealthRoutes(fastify, opts, next) {
next()
}
kalau tidak, Fastify tidak tahu apa yang sedang dilakukan plugin itu.
