Maison  >  Article  >  interface Web  >  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

WBOY
WBOYoriginal
2024-08-09 22:37:03341parcourir

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

Node.js v20.6 est sorti 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é, commencez simplement à s'exécuter 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 itinéraires absolus

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 réseau à l'aide des DevTools dans la version 22.6.0.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn