web-dev-qa-db-fra.com

Comment définir NODE_ENV en production / développement sous OS X

Pour utilisation dans les environnements express.js. Aucune suggestion?

291
Mark Gia Bao Nguyen

Avant d’exécuter votre application, vous pouvez le faire dans la console,

export NODE_ENV=production

Ou si vous êtes dans Windows, vous pouvez essayer ceci:

SET NODE_ENV=production

ou vous pouvez exécuter votre application comme ceci:

NODE_ENV=production node app.js

Vous pouvez également le définir dans votre fichier js:

process.env.NODE_ENV = 'production';

Mais je ne suggère pas de le faire dans votre fichier d'exécution, car il n'est pas facile d'ouvrir VIM sur votre serveur et de le changer en production. Vous pouvez créer un fichier config.json dans votre répertoire et chaque fois que votre application est exécutée, elle le lit et définit la configuration.

616
Farid Nouri Neshat

dans package.json:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

puis courez dans le terminal:

npm start
89
wangchi

Personne n'a mentionné .env ici encore? Créez un fichier .env à la racine de votre application, puis require('dotenv').config() et lisez les valeurs. Facilement changé, facile à lire, multiplate-forme.

https://www.npmjs.com/package/dotenv

52
Thomas McCabe

export NODE_ENV=production est une mauvaise solution, il disparaît après le redémarrage.

si vous ne voulez plus vous soucier de cette variable, ajoutez-la à ce fichier:

/etc/environment

n'utilisez pas la syntaxe d'exportation, écrivez simplement (dans la nouvelle ligne si du contenu existe déjà):

NODE_ENV=production

cela fonctionne après le redémarrage. Vous n'aurez plus besoin d'entrer à nouveau commande (== --- ==) exportation NODE_ENV = production et d'utiliser simplement noeud avec tout ce que vous voulez - pour toujours, pm2 ...

Pour heroku:

heroku config:set NODE_ENV="production"

qui est en réalité par défaut.

43
Lukas

C'est un bon article sur NODE_ENV: http://www.hacksparrow.com/running-express-js-in-production-mode.html .

Pour configurer automatiquement à partir de Grunt, vous pouvez utiliser le plugin https://npmjs.org/package/grunt-env .

21
heroku config:set NODE_ENV="production"
21
david_adler

Pour ne pas avoir à vous soucier de savoir si vous exécutez vos scripts sous Windows, Mac ou Linux, installez le package cross-env. Ensuite, vous pouvez facilement utiliser vos scripts, comme ceci:

"scripts": {
    "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
    "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}

Des supports massifs pour les développeurs de ce paquet.

15
Notorious

Pour Windows Powershell, utilisez cette commande

$env:NODE_ENV="production" ; node app.js
8
Harikrishnan

Sous OSX, je vous recommande d’ajouter export NODE_ENV=development à votre ~/.bash_profile et/ou ~/.bashrc et/ou ~/.profile.

Personnellement, j’ajoute cette entrée à mon ~/.bashrc, puis j’ai le ~/.bash_profile~/.profile importer le contenu de ce fichier afin qu’il soit cohérent d’un environnement à l’autre.

Après avoir effectué ces ajouts, veillez à redémarrer votre terminal pour prendre en charge les paramètres.

6
Vincil Bishop

Si vous utilisez webpack dans votre application, vous pouvez simplement le définir ici, en utilisant DefinePlugin...

Donc, dans votre section plugin, définissez le NODE_ENV sur production:

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]
2
Alireza

Si vous êtes sur Windows. Ouvrez votre cmd au bon dossier puis d'abord

set node_env={your env name here}

appuyez sur Entrée, vous pouvez alors commencer votre noeud avec

node app.js

ça va commencer avec votre réglage env

1
garenyondem

Daniel a une réponse fantastique qui est la meilleure approche pour le processus de déploiement correct (définir et oublier).

Pour ceux qui utilisent express. Vous pouvez utiliser grunt-express-server, qui est également fantastique. https://www.npmjs.org/package/grunt-express-server

0
Jesse

Afin de disposer de plusieurs environnements, vous avez besoin de toutes les réponses avant (paramètre NODE_ENV et exportez-le), mais j'utilise une approche très simple sans rien installer. Dans votre package.json, il suffit de mettre un script pour chaque env dont vous avez besoin, comme ceci:

...
"scripts": {
    "start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
    "start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
  }
 ...

Ensuite, pour lancer l'application au lieu d'utiliser npm start, utilisez npm run script-prod.

Dans le code, vous pouvez accéder à l'environnement actuel avec process.env.NODE_ENV.

Voila.

0
rmpt