Update eject example to something more robust
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 35/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- node.js, typescript
- Domaine
- cli, documentation
Piste de recherche
L’issue ne nomme pas le fichier de template d’eject ni de test ; commencez par localiser l’exemple d’eject dans fastify-cli et examiner comment l’application générée enregistre les plugins et démarre le serveur. Mettez à jour l’exemple afin de valider l’enregistrement avant de se mettre à écouter et de montrer .ready() ; c’est terminé lorsque l’exemple généré reflète ce flux et que les vérifications pertinentes passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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);
}
});
});
- Langage dominant
- JavaScript
- Étoiles
- 733
- Forks
- 179
- Merge moyen
- 8 j 12 h
- PR mergées (30 j)
- 2
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de fastify/fastify-cli
-
Allow to use custom templatesOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
fastify/fastify-cli#846 · 2 commentaires ·
-
Options propagationOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
fastify/fastify-cli#841 ·
-
Generated Fastify ESM/TS app has broken `npm test` command (FASTIFY_AUTOLOAD_TYPESCRIPT)Peut-être pris @GhaythBenAbid l’a pris il y a 30 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
fastify/fastify-cli#835 · 2 commentaires ·
-
Adding Path Alias Support in fastify-cliPeut-être à nouveau libre @ali139713 l’a pris il y a 53 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
fastify/fastify-cli#806 · 1 commentaire · 7 réactions ·
-
Only watch specified directory (--watch CLI param)Peut-être pris @josephreilly22 l’a pris il y a 243 jours. Ouvertegood first issue
Difficulté 3/5 1-2 jours Accessibilité débutants 38/100
fastify/fastify-cli#787 · 5 commentaires · 2 réactions ·
Toutes les issues de fastify/fastify-cli
Issues similaires
-
change request evaluating
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
sindresorhus/eslint-plugin-unicorn#3907 ·
Les mainteneurs répondent en général sous 1 jour
-
Android bug feature/error-tracking react-native team/error-tracking
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
PostHog/posthog-js#5310 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Add Prettier and a format-check CI jobPeut-être pris @ezekielnathaniel070-ai l’a pris aujourd’hui. Ouvertebackend frontend good first issue Stellar Wave
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
OlaGreat/starbound-realms#98 · 1 commentaire ·
-
Add AudiobookshelfOuverteapp request good first issue help wanted self-hosted app
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Secra-Solutions/Conector#15 ·
-
Complexity: See issue making label epic good first issue Issue Making: Level 1 P-Feature: Project Info and Page role: back end/devOps role: front end size: 0.25pt time sensitive
Difficulté 2/5 Moins d'une heure Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour