Hero Image

Configuration File Fastify

Aggiungere un file di configurazione

Come in ogni software che si rispetti non possiamo inserire i parametri di configurazione direttamente nel codice perchè verrebbe meno la portabilità di esecuzione cambiando velocemente i parametri.

.dotenv è la soluzione

Per quanto ci siano milioni di plugin che permettano di fare le stesse cose, oltre alla possibilità di scrivere qualcosa autonomamente, .dotenv è la strada più veloce e più pulita per avere:

  • Flessibilità di scelta in caso di ambienti multipli
  • Robustezza e possibilità di impedire la lettura del file di configurazione a utenti senza diritti
  • Possibilità di cambiare velocemente i dati senza dover ricompilare tutto

Utilizzo

Andiamo a vedere la struttura di un file .env

IP=127.0.0.1
PORT=9000

Abbiamo definito 3 variabili: IP e PORT con i valori rispettivamente di: 127.0.0.1 e 9000

In questo modo quando la nostra applicazione caricherà il file potrà usarli per instanziare le proprie variabili.

Riprendiamo ora il nostro file server.js e andiamo a modificarlo come segue in modo da utilizzare le variabili create da dotenv:

  • process.env.IP - per l'indirizzo ip
  • process.env.PORT - per la porta
// Instanziamo fastify e dotenv
require( "dotenv" ).config();
const fastify = require('fastify')({ logger: true })

// Declare a route
fastify.get('/', async (request, reply) => {
  return { hello: 'world' }
})

// Run the server!
const start = async () => {
  try {
    await fastify.listen({ port: process.env.PORT, host: process.env.IP })
  } catch (err) {
    fastify.log.error(err)
    process.exit(1)
  }
}
start()

A questo punto avviando il server con il comando

node server

Avremo sempre il solito outpupt ma questa volta ho i paramentri modificabili in maniera veloce

Stay tuned