‫Instructeur : Bon retour.
‫Dans cette vidéo, vous apprendrez tout
‫sur les variables d'environnement.
‫Alors qu'est-ce qu'ils sont, comment nous les définissons et comment nous les utilisons.
‫Maintenant, il ne s'agit pas exactement d'Express, cela a vraiment
‫à voir avec le développement de nœud JS en général, mais nous
‫en avons vraiment besoin pour avancer
‫dans le projet et c'est donc le bon
‫moment pour en parler.
‫Ainsi, le nœud JS, ou les applications Express,
‫peuvent s'exécuter dans différents environnements.
‫Et les plus importants sont l'environnement de développement
‫et l'environnement de production.
‫C'est parce que selon l'environnement, nous pouvons utiliser différentes
‫bases de données par exemple, ou nous
‫pouvons activer ou désactiver la connexion, ou nous
‫pouvons activer ou désactiver le débogage,
‫ou vraiment toutes sortes de paramètres différents qui
‫peuvent changer en fonction du développement que nous' re dedans.
‫Encore une fois, les plus importants sont le
‫développement et l'environnement de production.
‫Mais il existe d'autres
‫environnements que les grandes équipes pourraient utiliser.
‫Donc, ce type de paramètre que
‫je viens de mentionner, comme différentes bases de données ou
‫connexion activée ou désactivée, sera basé sur des variables d'environnement.
‫Désormais, par défaut, Express définit l'environnement sur développement, ce qui est très
‫logique car c'est ce que nous faisons lorsque nous
‫démarrons un nouveau projet.
‫Alors, juste pour la
‫démonstration, examinons cette variable, et nous
‫allons le faire ici dans le serveur.
‫Alors rappelez-vous que tout ce qui n'est pas lié à
‫Express, nous allons le faire en dehors de l'application. fichier JS.
‫Nous n'utilisons donc celui-ci ici que pour configurer notre application.
‫Nous n'utilisons donc celui-ci que pour configurer
‫tout ce qui a trait à l'application Express.
‫Mais les variables d'environnement sont vraiment en dehors
‫de la portée d'Express.
‫Faisons donc rapidement une console. connectez-vous
‫ici de l'application. obtenir
‫et puis terminer.
‫Sauvegardez-le ici et ici, vous pouvez voir le développement.
‫Permettez-moi d'effacer la console ici, de la sauvegarder à nouveau,
‫et là encore, vous voyez le développement.
‫C'est donc l'environnement dans lequel nous nous trouvons actuellement.
‫Et donc vous voyez que cette application. getenv nous fournira
‫la variable d'environnement env.
‫Donc, en résumé, les variables d'environnement sont des variables globales qui sont
‫utilisées pour définir l'environnement dans lequel une application
‫de nœud s'exécute.
‫Celui-ci est donc défini par Express,
‫mais le nœud JS lui-même définit en fait de nombreux environnements.
‫Maintenant, cette variable d'environnement ici est en fait définie
‫par Express, mais le nœud JS lui-même définit
‫également de nombreuses variables d'environnement.
‫Et donc jetons un coup d'œil à ceux-ci aussi.
‫Ceux-ci sont donc situés au niveau du processus. env.
‫Sauvegardez-le et nous avons
‫donc ici un tas de variables différentes et je ne
‫les passerai pas en revue toutes, mais voyons simplement qu'il y en a vraiment un
‫tas, et que le nœud utilise la plupart d'entre elles
‫en interne.
‫Par exemple, une tâche dans le répertoire
‫de travail actuel ici dans cette variable d'environnement
‫et vraiment un tas d'autres choses comme vous pouvez le voir.
‫Par exemple, mon dossier personnel
‫ou mon nom de connexion, vous voyez le script que nous utilisons pour démarrer ce processus,
‫donc vraiment un tas de choses dont, pour une raison quelconque, le
‫nœud JS a besoin en interne.
‫Maintenant, ces variables proviennent du module central
‫du processus et nous sommes définies au moment où le processus a démarré.
‫Et comme vous le voyez, nous n'avions pas besoin d'exiger correctement le
‫module de processus.
‫Il est simplement disponible partout automatiquement.
‫Désormais, dans Express, de nombreux
‫packages dépendent d'une variable spéciale appelée nœud N.
‫C'est donc une variable qui
‫est une sorte de convention qui devrait définir si
‫nous sommes en mode développement ou en mode production d'accord.
‫Cependant Express ne définit pas vraiment
‫cette variable, et nous devons donc le faire manuellement.
‫Et il existe plusieurs façons de le
‫faire, mais commençons par la plus simple
‫qui consiste à utiliser le terminal.
‫Je vais donc terminer
‫ce processus ici, l'effacer, et donc la dernière fois que nous avons commencé
‫ce processus, nous l'avons fait en utilisant npm start.
‫Et npm start à son tour signifie où est-il?
‫Il signifie donc serveur nodemon.
‫Et donc copions ceci en fait ici.
‫Nous utilisons donc le serveur nodemon. js pour démarrer le processus.
‫Mais si vous souhaitez
‫définir une variable d'environnement pour ce processus,
‫nous devons pré-planifier cette variable pour cette commande.
‫Nous disons
‫donc nodeenv, qui est cette variable
‫spéciale dont je viens de parler est égale
‫au développement.
‫Et si je commence ce processus maintenant, jetons un coup d'œil.
‫Et donc maintenant, nous avons ici le nœud N en développement.
‫Et c'est donc le résultat de faire cette console. processus de déconnexion.
‫env.
‫Et donc
‫cette variable que nous avons ici vient en fait de cette commande.
‫Et nous pouvons en fait définir encore plus si nous le voulions.
‫Alors disons simplement que X vaut 23 juste
‫à des fins de test, démarrez le processus et maintenant vous voyez
‫que la variable d'environnement X est attachée à cette chaîne 23 bien.
‫Encore une fois, de nombreux packages sur npm
‫que nous utilisons pour le développement
‫Express dépendent en fait de cette variable d'environnement.
‫Et donc, lorsque notre projet est
‫prêt et que nous allons le déployer, nous devons alors changer le nœud N et la variable en production.
‫Et nous le ferons bien sûr une fois que nous aurons
‫déployé le projet à la fin du cours.
‫Nous définissons donc les nœuds
‫N et X comme variables d'environnement, mais nous pouvons faire beaucoup plus.
‫Et c'est parce que nous utilisons
‫généralement des variables d'environnement comme les paramètres de configuration pour nos applications.
‫Ainsi, chaque fois que notre application a besoin d'une configuration pour
‫des éléments susceptibles de changer en fonction de l'environnement dans lequel l'application
‫s'exécute, nous utilisons des variables d'environnement.
‫Par exemple, nous pouvons utiliser différentes bases de données pour
‫le développement et les tests jusqu'à ce que nous
‫puissions définir une variable pour chacune, puis activer
‫la bonne base de données en fonction de l'environnement.
‫Nous pourrions également définir des données sensibles
‫telles que des mots de passe et des noms d'utilisateur à l'aide de variables d'environnement.
‫Maintenant, il n'est pas vraiment pratique de
‫toujours définir toutes ces variables dans la
‫commande où nous démarrons l'application.
‫Imaginez donc que
‫nous ayons 10 variables d'environnement et qu'il ne serait pas vraiment pratique
‫de les écrire toutes ici à l'intérieur de cette commande.
‫Et donc à la place, ce que nous faisons est de créer un fichier de configuration.
‫Alors laissez-moi aller de l'avant
‫et créer config. env.
‫Et donc env est
‫vraiment la convention pour définir un fichier qui est ces variables d'environnement.
‫Et le code VS le
‫reconnaît et place cette icône de configuration directement dans le fichier.
‫Définissons maintenant cette variable ici
‫et collons-la ici.
‫Et nous pouvons
‫également utiliser certaines de ces données sensibles que je viens de mentionner.
‫Supposons donc que l'utilisateur
‫soit Jonas en minuscules et que le mot de passe soit un, deux, trois, quatre, cinq, six.
‫Maintenant, comme vous le voyez, ces noms de variables
‫sont généralement toujours en majuscules.
‫C'est donc une sorte de convention que nous utilisons.
‫Maintenant, dans votre code VS, tout
‫le texte est probablement simplement blanc, vous n'avez donc pas de coloration syntaxique.
‫Et j'ai ça parce qu'ils l'utilisent. env ici.
‫Alors si vous voulez votre . env pour qu'ils soient jolis comme celui-ci,
‫allez-y et installez celui-ci.
‫Nous avons donc un mot de
‫passe utilisateur, définissons également le port sur lequel notre application doit s'exécuter.
‫C'est donc aussi une sorte
‫de variable standard qui se trouve généralement dans un fichier . env comme celui-ci.
‫Et définissons celui-ci à 8 000.
‫Maintenant, comment pouvons-nous réellement connecter cela. env avec notre application de
‫nœud ?
‫Nous avons donc besoin
‫d'un moyen de lire ces variables à partir de ce fichier,
‫puis de les enregistrer en tant que variables d'environnement.
‫Car pour le moment, il ne s'agit
‫que d'un fichier texte et le nœud JS n'a aucun moyen de savoir que ces variables sont ici.
‫Et donc pour cela, la norme utilise en quelque sorte
‫un package npm appelé . env.
‫Donc npm install. env, d'accord,
‫alors
‫allons sur notre
‫serveur et avons réellement besoin de ce module.
‫Donc const. env est égal à
‫require. env, si simple.
‫Et ici, nous
‫pouvons simplement utiliser cette variable
‫dotenv appelée config dessus, puis nous n'avons qu'à passer un objet pour spécifier
‫le chemin où se trouve notre fichier de configuration.
‫Donc chemin, config
‫dotenv.
‫Et donc, cette commande
‫va maintenant lire nos
‫variables à partir du fichier et les enregistrer dans les variables d'environnement du nœud JS.
‫Exécutons maintenant npm start et cela devrait
‫alors bloquer toutes nos variables
‫d'environnement sur la console à cause de cette ligne de code.
‫Et donc attendons-le, et en effet ici nous
‫avons nodeenv, nous avons le
‫port, les mots de passe, et bien sûr le reste des données devrait être
‫quelque part ici dans cette gigantesque liste.
‫Peu importe où il se trouve ici.
‫L'utilisateur était donc en fait Jonas. io déjà et nous devrions
‫donc appeler ce nom d'utilisateur ici.
‫Ensuite, réenregistrez-le ici
‫afin de relancer le serveur, et nous avons maintenant un nom
‫d'utilisateur ici et ce sont donc les quatre variables d'environnement
‫qui sont définies dans notre fichier.
‫Génial, et juste pour finir, allons maintenant de l'avant et utilisons
‫cette variable nodeenv ainsi que la variable port.
‫Et pour ce faire, nous allons dans app. js et quelque part ici, le port doit
‫être défini et quelque part ici, nous avons un middleware de journalisation orale et
‫ce que je veux faire maintenant,
‫c'est exécuter uniquement ce middleware afin de ne le
‫définir que lorsque nous sommes réellement en développement,
‫afin que la connexion ne se produise pas lorsque le
‫l'application est en production.
‫Nous avons donc cela ici, et allons
‫de l'avant et
‫disons si le processus. env. nodeenv est égal
‫au développement, alors utilisez Morgan.
‫Maintenant, vous
‫vous demandez peut-être pourquoi nous avons réellement accès à cette variable
‫d'environnement ici alors que nous ne les avons pas vraiment définies dans ce fichier mais dans le serveur. js.
‫Et la réponse à cela est que la lecture des
‫variables du fichier qui arrive ici au processus de nœud n'a
‫besoin d'être effectuée qu'une seule fois.
‫C'est alors dans le processus et le processus est
‫bien sûr le même peu importe dans quel dossier nous sommes.
‫Nous sommes donc toujours dans
‫le même processus et les variables d'environnement sont sur le processus.
‫Ainsi, le processus en cours d'exécution, l'emplacement
‫d'exécution de notre application est
‫toujours le même et nous est donc disponible dans
‫chaque fichier du projet.
‫C'est donc ainsi que nous utilisons cette variable, revenons maintenant
‫au serveur et disons que le port doit être
‫soit celui provenant
‫des variables d'environnement, soit ce 3 000.
‫Donc processus. env. port ou 3.000.
‫Maintenant, quelque chose ne va pas ici, jetons un coup d'œil, et
‫oh je vois que j'utilise déjà 8 000 dans
‫d'autres applications qui s'exécutent quelque part
‫sur mon ordinateur.
‫Et permettez-moi d'aller de l'avant et de changer
‫cela ici à 3 000 également.
‫Mais cela n'a pas vraiment d'importance, vous pouvez laisser le vôtre à 8
‫000 si cela fonctionne pour vous.
‫Effacez-le ici, donnez-lui une autre sauvegarde, et maintenant cela fonctionne.
‫Vous pouvez également vous débarrasser de cette console. log ici car nous n'avons pas
‫besoin de voir ces variables tout le temps.
‫Et faisons maintenant rapidement une requête http
‫pour voir si notre enregistreur fonctionne toujours et je vais le
‫refaire ici facteur, donc
‫celui-ci, en revenant, et maintenant notre connexion a disparu.
‫Eh bien, voyons pourquoi.
‫Nous l'avons donc ici en développement, ce qui est correct.
‫Et donc cela devrait réellement fonctionner, donc
‫c'est également correct ici, le développement.
‫Eh bien, faisons une console. log
‫et jetez un œil à un niveau, mais
‫nous ne sommes pas définis ici.
‫Voyons donc ce qui se passe ici, et oui, je vois le problème,
‫c'est que nous avons en
‫fait besoin du fichier
‫d'application avant que nos variables d'environnement ne soient lues à partir du fichier de configuration.
‫Et il faut donc que ce soit l'inverse.
‫Alors laissez-moi déplacer cela ici et seulement
‫après cela, nous voulons exécuter le code qui se
‫trouve dans le fichier up.
‫Et seulement après cela, nous voulons exécuter le code
‫qui se trouve dans le fichier up.
‫Encore une fois, nous n'avons pas pu lire la variable de
‫processus à l'intérieur de l'application. js car il n'était pas encore configuré.
‫Donc, si nous lui donnons une sauvegarde maintenant, alors vous
‫voyez effectivement un développement ici.
‫Et si nous faisons notre demande maintenant, envoyons-la, alors bien
‫sûr nous récupérons notre logger.
‫Donc ça marche maintenant.
‫Et maintenant enfin, comme dernier
‫test, ajoutons un nouveau script de démarrage à notre package. json.
‫Donc, pour le moment, nous avons démarré le serveur nodemon, mais je souhaite
‫également en ajouter un autre pour la production
‫afin que nous puissions tester ce qui se passe dans cette situation.
‫Alors lancez prod, et
‫laissez-moi appeler l'autre dev, et donc en production, nous
‫voulons simplement définir la variable nodeenv sur production.
‫Donc, nodenv est égal à
‫la production et le reste est le même.
‫Donc
‫nodenv, serveur. js.
‫Finissons donc
‫celui-ci ici npm run start
‫production.
‫Et maintenant, vous
‫voyez que notre variable nodeenv est en fait définie sur production.
‫Cela vient donc de cette console. connectez-vous ici.
‫Et si maintenant
‫faites cette demande, nous n'obtiendrons alors pas notre logger.
‫Ce n'est donc plus ici comme avant.
‫Et c'est ainsi que nous exécutons un
‫code différent selon que nous sommes en développement ou en production.
‫Alors débarrassons-nous de celui-ci ici, nous
‫pouvons également fermer
‫celui-ci, et revenons donc à notre script de
‫développement bien sûr, donc npm lancez start dev
‫et tout va bien, nous y sommes.
‫Juste un dernier test
‫et voici en effet notre résultat de connexion.
‫Voilà pour les variables d'environnement, passons au dernier
‫cours de cette section.