"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Fichiers Node.js v .env, modules d'importation et modèle d'autorisation

Fichiers Node.js v .env, modules d'importation et modèle d'autorisation

Publié le 2024-08-22
Parcourir:150

Node.js v .env files, import modules, and Permission Model

Node.js v20.6 a été publié avec de nouvelles fonctionnalités étonnantes qui font partie des versions LTS à partir du 24 octobre 2023. Voyons voir !

Les fichiers de configuration INI

Dites adieu au package dotenv, Node.js peut désormais charger des variables d'environnement à partir d'un fichier .env.

node --env-file path/to/.env index.js

 ? Le chemin d'accès au fichier INI est obligatoire car Node.js n'a pas choisi de nom par défaut pour le fichier INI.

 ? Si le fichier INI n'existe pas, le processus de nœud n'a pas échoué, démarrez simplement son exécution sans les variables d'environnement.

Chargement de NODE_OPTIONS

Vous pouvez charger les variables d'environnement spécifiques de Node.js (comme NODE_OPTIONS) à l'aide d'un fichier de configuration INI comme dans l'exemple suivant :

NODE_NO_WARNINGS=1
NODE_OPTIONS="--experimental-permission --allow-fs-read=*"
TZ=Pacific/Honolulu
UV_THREADPOOL_SIZE=5

Vous pouvez l'utiliser avec la même méthode :

node --env-file .env index.js

Précharger les modules ES

Préchargez les modules ES au démarrage à l'aide de l'indicateur --import, le module sera chargé avant l'exécution de tout code d'application, même le point d'entrée.

node --import path/to/file.js index.js

Cet indicateur est similaire à l'indicateur --require bien connu utilisé pour charger les modules CommonJS.

 ? Les modules préchargés avec --require s'exécuteront avant les modules préchargés avec --import.

Modèle d'autorisation

Nous disposons d'un nouveau mécanisme pour restreindre l'accès à des ressources spécifiques lors de l'exécution d'un processus Node.js appelé Permission Model. L'API existe derrière un indicateur --experimental-permission qui, lorsqu'il est activé, restreindra l'accès à toutes les ressources non explicitement autorisées.

Autorisations du système de fichiers

L'indicateur --allow-fs-read autorise toutes les opérations FileSystemRead utilisant *, ou vers des chemins spécifiques utilisant des routes absolues.

node --experimental-permission --allow-fs-read=* index.js

Pour autoriser uniquement l'accès à des chemins spécifiques, vous devez utiliser des routes absolues

node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js

 ? Le module d'initialisation doit également être autorisé. Sinon, le fichier index.js ne peut pas être chargé par le processus Node.js lui-même.

 ? Vous pouvez utiliser . pour autoriser l'accès au répertoire de travail, mais vous ne pouvez pas l'utiliser pour spécifier le chemin d'accès à un fichier (par exemple ./index.js).

node --experimental-permission --allow-fs-read=. index.js

L'indicateur --allow-fs-write permet d'accéder à des chemins spécifiques ou à l'ensemble du système de fichiers en utilisant *.

node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js

Processus enfant

Lorsque le modèle d'autorisation est activé, le processus ne pourra générer aucun processus enfant par défaut, vous devez utiliser le --allow-child-process pour autoriser cette opération. Utilisons le code suivant pour index.js.

const childProcess = require('node:child_process');
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);

Pour exécuter cet extrait avec le modèle d'autorisation activé, vous devez exécuter index.js à l'aide de la commande suivante :

node --experimental-permission --allow-fs-read . --allow-child-process index.js

 ? Le processus enfant n'hérite pas du modèle d'autorisation par défaut, c'est pourquoi le new-file.txt est créé avec succès.

Plus d'options

Vous pouvez cocher l'indicateur --allow-worker si vous souhaitez créer des threads de travail sous ce modèle d'autorisation et --allow-wasi pour autoriser la création d'instances WASI

Conclusion

Nous disposons de nombreux nouveaux outils pour charger les variables d'environnement de notre application, d'une méthode pour importer les modules ES de préchargement requis dans notre code et d'un nouveau modèle d'autorisation pour augmenter la sécurité de nos systèmes.

Restez à l'écoute du blog de Node.js, cette équipe ajoute des fonctionnalités géniales dans chaque version ! Nous disposons d'un support initial de TypeScript et d'une inspection du réseau à l'aide des DevTools dans la version 22.6.0.

Déclaration de sortie Cet article est reproduit à l'adresse : https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3