Maison > interface Web > js tutoriel > 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
Libérer: 2024-08-09 22:37:03
original
384 Les gens l'ont consulté

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
Copier après la connexion

? 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
Copier après la connexion

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

node --env-file .env index.js
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

? 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
Copier après la connexion

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
Copier après la connexion

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!")']);
Copier après la connexion

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
Copier après la connexion

? 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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal