L'alternativa convenzionale a ciò che si sta facendo, specialmente quando si tratta di chiavi API, è utilizzare environment variables. Questa è una funzione di configurazione a livello di sistema operativo. Ogni processo ha il proprio insieme di variabili d'ambiente, generalmente ereditato dal suo processo genitore. Per convenzione, le variabili di ambiente hanno nomi maiuscoli.
In node.js, è possibile accedere alle variabili di ambiente tramite process.env
. Ad esempio, se si esegue una domanda come questa:
$ MY_VARIABLE=test node app.js
è possibile accedere al valore della variabile MY_VARIABLE
ambiente tramite:
process.env.MY_VARIABLE
Può essere noioso, tuttavia, avere a tenere passando il variabile di ambiente (s) su ogni invocazione del tuo programma. Ecco perché esistono pacchetti come dotenv che consentono di memorizzare le variabili di ambiente in un file di testo.
Più in particolare, si avrà un file chiamato .env
e in essa si potrebbe avere:
MY_VARIABLE=test
OTHER_VARIABLE=foo
All'inizio della vostra app.js
, si poi fare:
require('dotenv').config();
Questa legge l'ambiente valori variabili dal file .env
. È quindi possibile accedervi come si farebbe accedere ad altre variabili di ambiente:
console.log("MY_VARIABLE: " + process.env.MY_VARIABLE);
console.log("OTHER_VARIABLE: " + process.env.OTHER_VARIABLE);
Ora non c'è bisogno di passare esplicitamente le variabili di ambiente per l'applicazione in base alla chiamata, cioè si può semplicemente eseguire come al solito:
$ node app.js
Se fai passaggio uno in modo esplicito, che sostituirà qualsiasi valore avete dato nel file di .env
:
$ MY_VARIABLE=bar node app.js
Ora la variabile di ambiente MY_VARIABLE
avrà un valore di "bar"
anziché "testing"
. Poiché OTHER_VARIABLE
non viene passato in modo esplicito, mantiene il valore di "foo"
specificato nel file .env
.
Cosa c'è di sbagliato nel salvarlo in un file .js ed esportare i valori? Quindi puoi semplicemente richiederli dove ne hai bisogno. –
a quanto pare, non capisco la tua domanda. se non lo vuoi globalmente lo richiede localmente. – Kuf