web-dev-qa-db-fra.com

Comment détecter l'environnement dans une application express.js?

Comment détectez-vous l'environnement dans lequel une application ExpressJS s'exécute? (développement, test, production?). Il n'y a rien dans process.env qui indique un environnement ...

Je suis conscient que vous pouvez déclarer des variables dans votre fichier de configuration sous chaque environnement, mais cela n'aide pas si vous chargez des modules de manière dynamique.

51
sethvargo

Vous pouvez soit vérifier l'environnement en vérifiant le app.settings.env (cela fonctionnera dans Express), ou vous pouvez le faire de manière plus directe en cochant process.env.NODE_ENV (l'environnement est celui qui se trouve dans cette variable ou "développement" par défaut <ceci aussi fonctionne dans d'autres bibliothèques telles que Socket.IO, etc.).

65
alessioalex

app.get ('env') renvoie également l'environnement. 

if ( app.get('env') === 'development' ) {
    app.use(express.errorHandler());
}
23

J'aimerais aborder un moyen simple de transmettre des variables NODE_ENV à votre script de noeud afin de pouvoir y accéder dans process.env

  "scripts": {
    "start": "./node_modules/.bin/cross-env NODE_ENV=development ./node_modules/.bin/nodemon server.js",
    "debug": "./node_modules/.bin/cross-env NODE_ENV=development ./node_modules/.bin/nodemon --debug server.js",
    "test": "./node_modules/.bin/cross-env NODE_ENV=test ./node_modules/.bin/babel-tape-runner test/test-*.js"
  },

peut être utilisé comme

if ( app.get('env') === 'development' ) {
    app.use(express.errorHandler());
}
9
iamwhitebox

Le peut détecter dans quel environnement vous vous trouvez en inspectant app.settings.env.

2
DHamrick

Il y a beaucoup de recommandations utiles dans d'autres réponses. Je le fais généralement comme ça:

const environment = process.env.NODE_ENV || 'development';

La bonne chose est que cette approche n'est pas spécifique à Express en soi, mais est en fait une pratique acceptée dans l'écosystème plus large de Node.js.

De plus, j'ai implémenté un module réutilisable, qui permet de détecter automatiquement l'environnement en analysant les arguments de la CLI et la variable NODE_ENV. Cela pourrait être utile sur votre machine de développement, car vous pouvez facilement changer d’environnement en passant un argument CLI à votre programme Node.js comme ceci: $ node app.js --prod.

Veuillez voir plus de détails et d’utilisations sur la page detect-environment .

0
Slava Fomin II