node.js - tant - use environment variable node js




Comment puis-je définir NODE_ENV=production sur Windows? (8)

Dans Ubuntu, c'est assez simple. Je peux lancer l'application en utilisant:

$ NODE_ENV=production node myapp/app.js

Cependant, cela ne fonctionne pas sur Windows. Existe-t-il un fichier de configuration dans lequel je peux définir l'attribut?


Ce serait idéal si vous pouviez définir des paramètres sur la même ligne que votre appel pour démarrer Node.js sous Windows. Regardez attentivement ce qui suit, et exécutez-le exactement comme indiqué:

Vous avez ces deux options:

  1. Sur la ligne de commande:

    set NODE_ENV=production&&npm start
    

    ou

    set NODE_ENV=production&&node index.js
    
  2. Exécutez "npm run start_windows" sur la ligne de commande avec votre fichier package.json configuré comme ci-dessous

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }
    

L'astuce pour que cela fonctionne sur Windows est que vous devez supprimer les espaces avant et après le "&&".


Dans PowerShell:

$env:NODE_ENV="production"

Je viens de trouver un joli paquet Node.js qui peut beaucoup aider à définir les variables d'environnement en utilisant une syntaxe unique, multi-plateforme.

https://www.npmjs.com/package/cross-env

Cela vous permet d'écrire quelque chose comme ceci:

cross-env NODE_ENV=production my-command

Ce qui est plutôt pratique! Aucune commande spécifique Windows ou Unix plus!


Juste pour clarifier, et pour quelqu'un d'autre qui pourrait leur arracher les cheveux ...

Si vous utilisez git bash sous Windows , set node_env=production&& node whatever.js que set node_env=production&& node whatever.js ne semble pas fonctionner . Au lieu de cela, utilisez le cmd natif. Ensuite, en utilisant set node_env=production&& node whatever.js fonctionne comme prévu.

Mon cas d'utilisation:

Je développe sur Windows parce que mon flux de travail est beaucoup plus rapide, mais je devais m'assurer que le middleware spécifique au développement de mon application ne tirait pas dans l'environnement de production.


Pour plusieurs variables d'environnement, un fichier .env est plus pratique:

# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD

Il est facile à utiliser avec dotenv-safe :

  1. Installez avec npm install --save dotenv-safe .
  2. Incluez-le dans votre code (meilleur au début de l' index.js ) et utilisez-le directement avec la commande process.env :
require('dotenv').load()
console.log(process.env.DB_HOST)   

N'oubliez pas d' ignorer le fichier .env dans votre VCS .

Votre programme échoue alors rapidement si une variable "définie" dans .env.example n'est .env.example définie comme variable d'environnement ou dans .env .


Pour exécuter votre application dans PowerShell (puisque && est interdit):

($env:NODE_ENV="production") -and (node myapp/app.js)

Notez que la sortie de texte de ce que fait le serveur est supprimée, et je ne suis pas sûr que ce soit corrigible. (Expansion de la réponse de @ jsalonen.)


Voici la méthode de la ligne sans commande:

Sous Windows 7 ou 10, tapez environnement dans la zone de recherche du menu Démarrer, puis sélectionnez Modifier les variables d'environnement système.

Vous pouvez également accéder à Panneau de configuration \ Système et sécurité \ Système, puis cliquer sur Paramètres système avancés.

Cela devrait ouvrir la boîte de dialogue Propriétés système avec l'onglet Avancé sélectionné. En bas, vous verrez un bouton Variables d'environnement .... Cliquez ceci

La boîte de dialogue Variables d'environnement s'ouvre.

En bas, sous Variables système, sélectionnez Nouveau ... Ceci ouvrira la boîte de dialogue Nouvelle variable système.

Entrez le nom et la valeur de la variable, puis cliquez sur OK.

Vous devrez fermer toutes les invites cmd et redémarrer votre serveur pour que la nouvelle variable soit disponible pour process.env. Si cela ne s'affiche toujours pas, redémarrez votre ordinateur.


Vous pouvez utiliser

npm run env NODE_ENV=production

C'est probablement le meilleur moyen de le faire, car il est compatible sur Windows et Unix.

À partir de la documentation run-script de npm :

Le script env est une commande intégrée spéciale qui peut être utilisée pour lister les variables d'environnement qui seront disponibles pour le script lors de l'exécution. Si une commande "env" est définie dans votre package, elle aura la priorité sur la version intégrée.





express