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