Qu'est-ce que NODE_ENV en Express?
var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
app.use(express.favicon());
app.use(express.static(settings.c.WEB_PATH + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.session({
cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
secret:'hamster',
store: r_store,
}));
app.use(useragent.express());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
});
C'est mon application. Je suis actuellement en cours d'exécution dans la production.
Cependant, quelqu'un m'a dit à propos de NODE_ENV
. Dois-je ajouter à ce code? Comment puis-je l'ajouter?
- Dans votre cas, je suppose que vous pouvez utiliser est
app.configure('development', ...)
ou la "production" de définir certains paramètres seulement pour le développement ou pour les environnements de production. Voir expressjs.com/api.html#app.configure
Vous devez vous connecter pour publier un commentaire.
NODE_ENV
est un la variable d'environnement rendu populaire par le express serveur web framework. Lorsqu'un nœud application est exécutée, il peut vérifier la valeur de la variable d'environnement et de faire des choses différentes en fonction de la valeur.NODE_ENV
est spécifiquement utilisé (par convention) à l'état si un environnement est un production ou un développement de l'environnement. Commune de cas d'utilisation est en cours d'exécution supplémentaire de débogage ou de code d'enregistrement s'exécute dans un environnement de développement.Accès NODE_ENV
Vous pouvez utiliser le code suivant pour accéder à la variable d'environnement vous de sorte que vous pouvez effectuer vos propres vérifications et logique:
var environment = process.env.NODE_ENV
Ou, alternativement, à l'aide de express "
app.get('env')
(remarque: par défaut, c'est"development"
)Être conscient que si vous n'avez pas explicitement défini
NODE_ENV
à votre environnement, il seraundefined
.Réglage NODE_ENV
Comment définir la variable d'environnement varie selon le système d'exploitation le système d'exploitation, et dépendent également de votre configuration utilisateur.
Si vous souhaitez définir la variable d'environnement comme un one-off, vous pouvez le faire à partir de la ligne de commande:
export NODE_ENV=production
$env:NODE_ENV = 'production'
Dans le long terme, vous devriez persister ce, afin de ne pas annuler si vous redémarrez - plutôt que de dresser la liste de toutes les méthodes possibles pour ce faire, je vais vous permettre de rechercher comment le faire vous-même!
Convention a dictacted qu'il y a seulement deux valeurs, vous devez utiliser
NODE_ENV
, soitproduction
oudevelopment
, en minuscules. Il n'y a rien qui vous empêche d'ajouter plus de valeurs, mais ce n'est probablement pas une bonne idée, car je vois beaucoup de ce genre de code dans de nombreux node_modules que j'utilise:Noter que c'est un vraiment mauvais idée pour essayer de mettre en
NODE_ENV
de dans un nœud de l'application elle-même - si vous le faites en s'appliquent uniquement pour les processus à partir de laquelle il a été mis en, donc les choses probablement ne fonctionne pas comme vous l'espériez. Ne le faites pas, vous allez le regretter.app.configure()
a été supprimé. Le Express 4 guide de migration recommande "l'utilisationprocess.env.NODE_ENV
ouapp.get('env')
pour détecter l'environnement et de configurer l'application en conséquence."app.get('env')
précisément pour cette raison. Il couvre jusqu'que cette variable n'est pas définie de décisions, les choses semblent incohérentes lors de l'accès de l'extérieur de l'express. En outre, je pense que c'est moins nocif pour avoir le code de débogage accidentellement pas en cours d'exécution sur un environnement de développement que c'est de l'avoir accidentellement exécution sur un environnement de production.development
qui - entre autres choses - signifie que les modèles seront retraités pour chaque demande. La conséquence est un gain de performances ou de vidange de ~75% entre la production et le développement lors de l'utilisation de Jade. J'ai également créé un blog sur ce apmblog.dynatrace.com/2015/07/22/..."build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
NODE_ENV est une variable d'environnement qui se tient pour nœud de l'environnement dans l'express du serveur.
C'est la manière de définir et de détecter l'environnement auquel nous sommes dans.
Il est très courant à l'aide de
production
etdevelopment
.Ensemble:
Obtenir:
Vous pouvez l'obtenir à l'aide de
app.get('env')
Je suppose que la question initiale était de savoir comment s'exprime l'utilisation de cette variable d'environnement.
Express utilise NODE_ENV à modifier son comportement par défaut. Par exemple, le mode de développement, le gestionnaire d'erreurs par défaut renverra une stacktrace pour le navigateur. Dans le mode de production, la réponse est tout simplement
Internal Server Error
, pour éviter la fuite de détails de mise en œuvre pour le monde.