Update eject example to something more robust
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- node.js, typescript
- Bereich
- cli, documentation
Rechercherichtung
Das Issue nennt weder die Eject-Template-Datei noch einen Test; beginne damit, das Eject-Beispiel in fastify-cli zu finden und zu untersuchen, wie die generierte App Plugins registriert und den Server startet. Aktualisiere das Beispiel so, dass es die Registrierung vor dem Lauschen validiert und .ready() zeigt; fertig ist es, wenn das generierte Beispiel diesen Ablauf widerspiegelt und die relevanten Prüfungen erfolgreich sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the feature has not already been requested
🚀 Feature Proposal
Change the eject file example to validate everything before running the server and make use of the .ready() function.
Motivation
What made me think of this approach are:
- Fastify encapsulation concept, the server should not run if something goes wrong with
pluginsand are not loaded inside correctly inside Fastify. - The struggle I've been in the past few days trying to use Fastify in a complex real-world project and I didn't find clear examples.
- easier to handle errors, if something goes wrong Fastify will throw the valid error not some error buried deep inside the router or hooks
- the unclear error "cannot read properties of undefined (reading 'length')" which was happening for several reasons and I cannot detect them until i throw error on startup
Example
// Read the .env file.
import * as dotenv from "dotenv";
dotenv.config();
// Require the framework
import Fastify from "fastify";
// Require library to exit fastify process, gracefully (if possible)
import closeWithGrace from "close-with-grace";
// Instantiate Fastify with some config
const app = Fastify({
logger: true,
});
// make use of the `.ready()` to prevent going on race condition
fastify.register(app).ready((err) => {
// throw error if something happened on registering `plugins` or `routes`
if (err) throw err;
// delay is the number of milliseconds for the graceful close to finish
const closeListeners = closeWithGrace(
{
delay:
parseInt(process.env.FASTIFY_CLOSE_GRACE_DELAY as string) ||
500,
},
async function ({ signal, err, manual }) {
if (err) {
fastify.log.error(err);
}
await fastify.close();
} as closeWithGrace.CloseWithGraceAsyncCallback
);
fastify.addHook("onClose", async (instance, done) => {
closeListeners.uninstall();
done();
});
//server listen
const port = process.env.PORT || 8000;
// Start listening.
fastify.listen({ port: parseInt(port as string) }, (err: any) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
});
});
- Vorherrschende Sprache
- JavaScript
- Sterne
- 733
- Forks
- 179
- Ø Merge
- 8 T. 12 Std.
- Gemergte PRs (30 T.)
- 2
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus fastify/fastify-cli
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
fastify/fastify-cli#846 · 2 Kommentare ·
-
Options propagationOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
fastify/fastify-cli#841 ·
-
Generated Fastify ESM/TS app has broken `npm test` command (FASTIFY_AUTOLOAD_TYPESCRIPT)Evtl. vergeben @GhaythBenAbid hat das vor 29 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
fastify/fastify-cli#835 · 2 Kommentare ·
-
Adding Path Alias Support in fastify-cliEvtl. wieder frei @ali139713 hat das vor 52 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
fastify/fastify-cli#806 · 1 Kommentar · 7 Reaktionen ·
-
Only watch specified directory (--watch CLI param)Evtl. vergeben @josephreilly22 hat das vor 242 Tagen übernommen. Offengood first issue
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 38/100
fastify/fastify-cli#787 · 5 Kommentare · 2 Reaktionen ·
Alle Issues in fastify/fastify-cli
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 2 Tagen
-
good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
saayam-for-all/webapp#1919 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Uuriko/project-room#3728 ·
Maintainer antworten meist innerhalb von 1 Tag
-
factory-active task-identify-harness-labels-done task-identify-issue-type-done
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
vercel/ai#23435 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
devops-thiago/ThrillhouseBot#1132 ·
Maintainer antworten meist innerhalb von 1 Tag