web-dev-qa-db-fra.com

process.env.NODE_ENV n'est pas défini

J'essaie de suivre un tutoriel sur NodeJs. Je ne pense pas avoir manqué quoi que ce soit, mais chaque fois que j'appelle le process.env.NODE_ENV, la seule valeur que je récupère est indéfinie. Selon mes recherches, la valeur par défaut devrait être "développement". Comment cette valeur est-elle définie dynamiquement et où est-elle définie initialement?

124
basheps

process.env est une référence à votre environnement, vous devez donc y définir la variable.

Pour définir une variable d’environnement dans Windows :

SET NODE_ENV=development

sous OS X ou Linux :

export NODE_ENV=development
160
James Tikalsky

Pour les personnes utilisant * nix (Linux, OS X, etc.), il n'y a aucune raison de le faire via une seconde commande d'exportation, vous pouvez l'enchaîner dans le cadre de la commande d'appel:

NODE_ENV=development node server.js

Plus facile, non? :)

41
mlaccetti

Nous avons rencontré ce problème lorsque vous travaillez avec noeud sur Windows.

Plutôt que d'exiger que quiconque tente d'exécuter l'application définisse ces variables, nous avons fourni un repli au sein de l'application. 

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

Dans un environnement de production, nous le définirions selon les méthodes habituelles (SET/export). 

22
Jacob

Dans UBUNTU, utilisez:

$ export NODE_ENV = test

5
Gilbert Flamino

Vous pouvez utiliser le paquet cross-env npm. Il se chargera de rogner la variable d'environnement et veillera également à ce qu'elle fonctionne sur différentes plates-formes.

Dans la racine du projet, exécutez:

npm install cross-env

Ensuite, dans votre package.json, sous scripts, ajoutez:

"start": "cross-env NODE_ENV=dev node your-app-name.js"

Ensuite, dans votre terminal, à la racine du projet, démarrez votre application en exécutant:

npm start

La variable d'environnement sera alors disponible dans votre application sous la forme process.env.NODE_ENV. Vous pourrez donc faire quelque chose comme:

if (process.env.NODE_ENV === 'dev') {
  // Your dev-only logic goes here
}
2
Liran H

dans package.json nous devons configurer comme ci-dessous (fonctionne sous Linux et Mac OS)

l'important est "export NODE_ENV = production" après que vos commandes de construction ci-dessous soient un exemple:

  "scripts": {
     "start": "export NODE_ENV=production && npm run build && npm run start-server",
     "dev": "export NODE_ENV=dev && npm run build && npm run start-server",
  } 
  • pour l'environnement dev, nous devons appuyer sur la commande "npm run dev"

  • pour un environnement de production, nous devons appuyer sur la commande "npm run start"

0
D V Yogesh

Vous pouvez également le définir par code, par exemple: 

process.env.NODE_ENV = 'test';

0
joaquindev