"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Archivos Node.js v .env, módulos de importación y modelo de permisos

Archivos Node.js v .env, módulos de importación y modelo de permisos

Publicado el 2024-08-22
Navegar:358

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

Node.js v20.6 se lanzó con nuevas características sorprendentes que forman parte de las versiones LTS a partir del 24 de octubre de 2023. ¡Veamos!

Los archivos de configuración INI

Diga adiós al paquete dotenv, ahora Node.js puede cargar variables de entorno desde un archivo .env.

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

? La ruta al archivo INI es obligatoria porque Node.js no eligió un nombre predeterminado para el archivo INI.

? Si el archivo INI no existe, el proceso del nodo no falló, simplemente comience a ejecutarlo sin las variables de entorno.

Cargando NODE_OPTIONS

Puedes cargar variables de entorno específicas de Node.js (como NODE_OPTIONS) usando un archivo de configuración INI como el siguiente ejemplo:

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

Puedes usar esto con el mismo método:

node --env-file .env index.js

Precargar módulos ES

Precargue los módulos ES al inicio usando el indicador --import, el módulo se cargará antes de que se ejecute cualquier código de la aplicación, incluso el punto de entrada.

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

Este indicador es similar al conocido indicador --require utilizado para cargar módulos CommonJS.

? Los módulos precargados con --require se ejecutarán antes que los módulos precargados con --import.

Modelo de permiso

Tenemos un nuevo mecanismo para restringir el acceso a recursos específicos durante la ejecución de un proceso de Node.js llamado Modelo de Permiso. La API existe detrás de una bandera --experimental-permission que, cuando está habilitada, restringirá el acceso a todos los recursos no permitidos explícitamente.

Permisos del sistema de archivos

El indicador --allow-fs-read permite todas las operaciones FileSystemRead usando *, o rutas específicas usando rutas absolutas.

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

Para permitir solo el acceso a rutas específicas, debes usar rutas absolutas

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

? También es necesario permitir el módulo inicializador. De lo contrario, el proceso Node.js no podrá cargar el archivo index.js.

? Puedes usar . para permitir el acceso al directorio de trabajo, pero no puede usarlo para especificar la ruta a un archivo (por ejemplo, ./index.js).

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

El indicador --allow-fs-write permite el acceso a rutas específicas o a todo el sistema de archivos usando *.

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

Proceso hijo

Cuando el modelo de permisos está habilitado, el proceso no podrá generar ningún proceso hijo de forma predeterminada; debe usar --allow-child-process para permitir esta operación. Usemos el siguiente código para index.js.

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

Para ejecutar este fragmento con el modelo de permiso habilitado, debe ejecutar index.js usando el siguiente comando:

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

? El proceso hijo no hereda el modelo de permisos de forma predeterminada, es por eso que el archivo nuevo.txt se crea correctamente.

Más opciones

Puedes marcar el indicador --allow-worker si deseas crear subprocesos de trabajo bajo este modelo de permiso y --allow-wasi para permitir la creación de instancias WASI

Conclusión

Tenemos muchas herramientas nuevas para cargar variables de entorno para nuestra aplicación, un método para importar módulos ES precargados requeridos en nuestro código y un nuevo modelo de permisos para aumentar la seguridad de nuestros sistemas.

Estén atentos al blog de Node.js, ¡este equipo está agregando funciones increíbles en cada versión! Tenemos soporte inicial para TypeScript y una inspección de red usando DevTools en v22.6.0.

Declaración de liberación Este artículo se reproduce en: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3