{"id":65364,"date":"2023-05-02T16:38:29","date_gmt":"2023-05-02T14:38:29","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=65364&#038;preview=true&#038;preview_id=65364"},"modified":"2025-01-17T14:01:30","modified_gmt":"2025-01-17T13:01:30","slug":"node-js-20","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/","title":{"rendered":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)"},"content":{"rendered":"<p>\u00a1Node.js v20 ya est\u00e1 disponible! El 18 de abril de 2023 se public\u00f3 y ya est\u00e1 disponible para todo el mundo. Con esta versi\u00f3n, Node.js deber\u00eda ser mucho m\u00e1s seguro y funcionar mejor.<\/p>\n<p>Es importante saber que \u2014 al tratarse de una versi\u00f3n par \u2014 se convertir\u00e1 en una versi\u00f3n de soporte a largo plazo (LTS) en octubre de 2023 y recibir\u00e1 soporte hasta abril de 2026. Sin embargo, el equipo de Node.js est\u00e1 buscando activamente la opini\u00f3n de la comunidad para identificar y solucionar cualquier problema antes de que pase a LTS.<\/p>\n<p>Esta nueva versi\u00f3n de Node.js trae interesantes actualizaciones y caracter\u00edsticas que los <a href=\"https:\/\/kinsta.com\/es\/blog\/tipos-de-desarrolladores\/\">desarrolladores<\/a> seguramente apreciar\u00e1n, como el Modelo de Permisos experimental, <code>import.meta.resolve<\/code> s\u00edncrono , un ejecutor de pruebas estable, actualiza el motor V8 JavaScript a la versi\u00f3n 11.3, aportando mejoras de rendimiento y correcciones de errores, y mucho m\u00e1s.<\/p>\n<p>En este art\u00edculo, explorar\u00e1s los cambios introducidos en Node.js v20, proporcionando una visi\u00f3n en profundidad a sus nuevas caracter\u00edsticas y capacidades.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Primeros Pasos con Node.js v20<\/h2>\n<p>La instalaci\u00f3n de Node.js v20 es bastante similar a la de otras versiones de <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-node-js\/\">Node.js<\/a>. Todo lo que tienes que hacer es<\/p>\n<ol start=\"1\">\n<li>Descargar el paquete instalador del <a href=\"https:\/\/nodejs.org\/en\/download\/current\">sitio web oficial de Node.js<\/a>.<\/li>\n<li>Una vez que hayas descargado el instalador, ejec\u00fatalo y sigue las instrucciones para completar el proceso de instalaci\u00f3n. Este proceso es bastante sencillo, y s\u00f3lo tienes que aceptar el acuerdo de licencia y pulsar el bot\u00f3n \u00abSiguiente\u00bb.<\/li>\n<li>Reinicia tu Sistema\/M\u00e1quina una vez finalizado el proceso de instalaci\u00f3n para asegurarte de que todos los cambios surten efecto.<\/li>\n<li>Verifica tu instalaci\u00f3n de Node.js ejecutando el siguiente comando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">node -v<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/04\/verify-node-v20-instalation.jpg\" alt=\"Verificaci\u00f3n de la instalaci\u00f3n de Node.js v20\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Instalaci\u00f3n de Node.js v20<\/figcaption><\/figure>\n<p>Si ves el n\u00famero de versi\u00f3n (v20.0.0), significa que Node.js est\u00e1 instalado correctamente, y est\u00e1s listo para empezar a trabajar con Node.js v20.<\/p>\n\n<h2>\u00bfQu\u00e9 Novedades Trae Node.js v20?<\/h2>\n<p>Exploremos las 5 actualizaciones principales introducidas con esta versi\u00f3n de Node.js. Estas caracter\u00edsticas incluyen:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Modelo de Permisos Experimental<\/h3>\n<p>La introducci\u00f3n del Modelo de Permisos experimental en Node.js v20 es una adici\u00f3n significativa que proporciona a los desarrolladores m\u00e1s control sobre el acceso a recursos espec\u00edficos durante la ejecuci\u00f3n.<\/p>\n<p>Esta nueva caracter\u00edstica es beneficiosa cuando la seguridad y el uso de recursos son cr\u00edticos, como en un entorno de producci\u00f3n.<\/p>\n<p>El Modelo de Permisos incluye varias capacidades, como restringir el acceso al sistema de archivos, child_process, worker_threads y complementos nativos.<\/p>\n<p>Los desarrolladores pueden utilizar banderas como <code>--allow-fs-read<\/code>, <code>--allow-fs-write<\/code>, y <code>--allow-child-process<\/code> para especificar a qu\u00e9 recursos se puede acceder. Para activar estas banderas, los desarrolladores deben utilizar la bandera <code>--experimental-permission<\/code> en combinaci\u00f3n con los permisos necesarios.<\/p>\n<p>Aqu\u00ed tienes un ejemplo de c\u00f3mo utilizar el Modelo de Permisos para permitir el acceso de lectura y escritura a todo el sistema de archivos:<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=* --allow-fs-write=* index.js<\/code><\/pre>\n<p>Los desarrolladores tambi\u00e9n pueden utilizar el Modelo de Permisos para especificar el acceso a carpetas y archivos concretos. Por ejemplo, el siguiente comando permite el acceso de escritura a la carpeta <strong>\/tmp\/<\/strong>:<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-write=\/tmp\/ --allow-fs-read=\/home\/index.js index.js<\/code><\/pre>\n<p>Una ventaja importante del Modelo de Permisos es la posibilidad de ejercer un control m\u00e1s granular sobre el acceso al sistema de archivos. Por ejemplo, los desarrolladores pueden especificar rutas y patrones wild para permitir el acceso a carpetas o archivos concretos.<\/p>\n<pre><code class=\"language-bash\">$ node --experimental-permission --allow-fs-read=\/home\/user\/* index.js<\/code><\/pre>\n<p>El comando anterior concede acceso de lectura a todas las carpetas del directorio <strong>\/home\/user\/<\/strong>.<\/p>\n<p>La propiedad permission del objeto proceso tambi\u00e9n puede utilizarse para comprobar si se ha concedido un permiso concreto en tiempo de ejecuci\u00f3n. Por ejemplo, si quieres comprobar si tu proceso Node.js tiene acceso de lectura a una carpeta concreta, <strong>\/home\/user\/documents<\/strong>, puedes utilizar el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-js\">if (process.permission.has('fs.read', '\/home\/user\/documents')) {\n  console.log('Read access granted to \/home\/user\/documents');\n} else {\n  console.log('Read access not granted to \/home\/user\/documents');\n}<\/code><\/pre>\n<p>Al utilizar el Modelo de Permisos, tienes un control m\u00e1s detallado sobre el acceso al sistema de archivos de tus procesos Node.js, lo que puede conducir a una mayor seguridad y a una utilizaci\u00f3n m\u00e1s eficiente de los recursos.<\/p>\n<p>Es crucial tener en cuenta que el Modelo de Permisos a\u00fan es experimental y puede cambiar en futuras versiones de Node.js. Es aconsejable mantenerse al d\u00eda con la <a href=\"https:\/\/nodejs.org\/api\/permissions.html#process-based-permissions\">documentaci\u00f3n del Modelo de Permisos<\/a> y tener precauci\u00f3n al utilizar estas funciones experimentales.<\/p>\n<h3>Ejecutor de Pruebas Estable<\/h3>\n<p>Node.js v20 incluye una versi\u00f3n estable del m\u00f3dulo test_runner que permite a los desarrolladores crear y ejecutar conjuntos de pruebas de <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> de forma r\u00e1pida y sencilla sin instalar dependencias adicionales.<\/p>\n<p>El ejecutor de pruebas estable incluye ahora varios bloques de construcci\u00f3n, como <code>describe<\/code>, <code>it<\/code>\/<code>test<\/code>, y hooks, para crear y estructurar archivos de pruebas, junto con mocking, watch mode y la posibilidad de ejecutar varios archivos de pruebas en paralelo mediante el comando <code>node --test<\/code>.<\/p>\n<p>Aqu\u00ed tienes un ejemplo de c\u00f3mo utilizar el ejecutor de pruebas:<\/p>\n<pre><code class=\"language-js\">import { test, mock } from 'node:test';\nimport assert from 'node:assert';\nimport fs from 'node:fs';\n\nmock.method(fs, 'readFile', async () =&gt; \"Hello World\");\ntest('synchronous passing test', async (t) =&gt; {\n  \/\/ This test passes because it does not throw an exception.\n  assert.strictEqual(await fs.readFile('a.txt'), \"Hello World\");\n});<\/code><\/pre>\n<p>El ejecutor de pruebas ofrece informes de pruebas configurables y personalizados mediante la bandera <code>--test-reporter<\/code>, cobertura de pruebas experimental mediante la bandera <code>--experimental-test-coverage<\/code> y capacidades de mocking.<\/p>\n<p>Aunque no pretende sustituir a los frameworks como <a href=\"https:\/\/jestjs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jest<\/a> o <a href=\"https:\/\/mochajs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mocha<\/a>, el ejecutor de pruebas estable ofrece una forma sencilla y r\u00e1pida de crear conjuntos de pruebas. Se ha mejorado significativamente desde su introducci\u00f3n en Node.js v19, y gracias a las pruebas y comentarios de los usuarios finales, ahora se ha marcado como estable en Node.js v20.<\/p>\n<p>Puedes encontrar m\u00e1s informaci\u00f3n en este <a href=\"https:\/\/github.com\/nodejs\/node\/pull\/46983\" target=\"_blank\" rel=\"noopener noreferrer\">pull request fusionado<\/a>.<\/p>\n<h3>Motor JavaScript V8 Actualizado a 11.3<\/h3>\n<p>El <a href=\"https:\/\/kinsta.com\/es\/blog\/node-debug\/#use-the-v8-inspector\">motor V8 JavaScript<\/a>, que impulsa Node.js, se ha actualizado a la versi\u00f3n 11.3 en Node.js v20. Esto mejora el rendimiento e introduce nuevas caracter\u00edsticas del lenguaje. Algunas de las nuevas caracter\u00edsticas que incluye esta actualizaci\u00f3n:<\/p>\n<ul>\n<li><code>String.prototype.isWellFormed<\/code> y <code>toWellFormed<\/code>: Estos m\u00e9todos son especialmente \u00fatiles para garantizar el formato adecuado de las cadenas. Esto ayuda a garantizar que la entrada de cadenas del usuario est\u00e1 en el formato UTF-16 correcto, reduciendo los errores en la era de los emojis.<\/li>\n<li>M\u00e9todos que modifican Array y TypedArray por copia: Esto puede ser \u00fatil para crear copias modificadas de arrays sin afectar a los datos originales, lo que es especialmente relevante en casos en los que necesites conservar los datos originales para compararlos o con otros fines.<\/li>\n<li><code>ArrayBuffer<\/code> reajustable y <code>SharedArrayBuffer<\/code> reajustable : proporciona una mayor flexibilidad, permitiendo una asignaci\u00f3n de memoria m\u00e1s eficiente.<\/li>\n<li>Bandera RegExp v con notaci\u00f3n de conjunto y propiedades de cadenas: a\u00f1ade funcionalidad para expresiones regulares.<\/li>\n<li>Llamada de cola WebAssembly: proporciona una forma de optimizar ciertos tipos de llamadas a funciones.<\/li>\n<\/ul>\n<p>Estas actualizaciones muestran el compromiso continuo de la comunidad de desarrollo de Node.js para mejorar el rendimiento y la funcionalidad.<\/p>\n<h3>Import.meta.resolve() S\u00edncrona<\/h3>\n<p>En Node.js v20, se ha introducido <code>import.meta.resolve()<\/code>, que facilita la escritura de scripts que no son sensibles a la ubicaci\u00f3n. Esta funci\u00f3n retorna de forma sincr\u00f3nica, similar al comportamiento del navegador, lo que permite una ejecuci\u00f3n m\u00e1s eficiente.<\/p>\n<p>Los hooks de resoluci\u00f3n del cargador de usuario pueden seguir defini\u00e9ndose como una funci\u00f3n as\u00edncrona, pero <code>import.meta.resolve()<\/code> seguir\u00e1 devolviendo de forma s\u00edncrona para el c\u00f3digo de la aplicaci\u00f3n aunque se carguen hooks de resoluci\u00f3n as\u00edncronos.<\/p>\n<p>El comportamiento s\u00edncrono de <code>import.meta.resolve()<\/code> permite una ejecuci\u00f3n m\u00e1s eficiente del c\u00f3digo, especialmente cuando se trata de grandes cantidades de datos. Como autor, puedes definir los ganchos de resoluci\u00f3n como funciones as\u00edncronas o s\u00edncronas, seg\u00fan prefieras. El c\u00f3digo de la aplicaci\u00f3n seguir\u00e1 ejecut\u00e1ndose de forma s\u00edncrona independientemente de si hay ganchos de resoluci\u00f3n as\u00edncronos cargados.<\/p>\n<h3>Aplicaciones Experimentales de Ejecuci\u00f3n \u00danica (SEA)<\/h3>\n<p>Las Aplicaciones Ejecutables Individuales Experimentales (SEA &#8211; Single executable applications) son una nueva caracter\u00edstica introducida en Node.js v20 que permite empaquetar tu aplicaci\u00f3n con el binario de Node.js, permitiendo a los usuarios finales distribuirla y ejecutarla como un \u00fanico archivo ejecutable.<\/p>\n<p>Esta ha sido una petici\u00f3n de la comunidad desde hace mucho tiempo, y el equipo ha estado perfeccionando el enfoque durante el \u00faltimo a\u00f1o.<\/p>\n<p>En Node.js v20, para crear una aplicaci\u00f3n ejecutable \u00fanica es necesario inyectar un blob preparado por Node.js a partir de una configuraci\u00f3n JSON, en lugar de inyectar el archivo JS sin procesar.<\/p>\n<p>Un blob es un archivo que contiene datos binarios, en este caso, preparados por Node.js, y se inyecta en el binario. Este cambio se hizo para permitir incrustar m\u00faltiples recursos coexistentes en el EAE, lo que abre nuevos casos de uso.<\/p>\n<p>Aqu\u00ed tienes un ejemplo de archivo <strong>sea-config.json<\/strong>:<\/p>\n<pre><code class=\"language-js\">{ \n      \"main\": \"myscript.js\", \n      \"output\": \"sea-prep.blob\" \n}<\/code><\/pre>\n<p>Cuando se ejecuta con el comando <code>node --experimental-sea-config sea-config.json<\/code>, el blob se escribe en el archivo <strong>sea-prep.blob<\/strong>, que luego puede inyectarse en el binario.<\/p>\n<p>La funci\u00f3n SEA permite a los desarrolladores distribuir <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">aplicaciones Node.js<\/a> sin necesidad de que los usuarios <a href=\"https:\/\/kinsta.com\/es\/blog\/como-instalar-node-js\/\">instalen Node.js<\/a>. La funcionalidad fue creada por <a href=\"https:\/\/github.com\/RaisinTen\">Darshan Sen<\/a>, que gan\u00f3 el premio a la Contribuci\u00f3n Sobresaliente de un Reci\u00e9n Llegado como parte de los Premios JavaScriptLandia en OpenJS World.<\/p>\n<p>Microsoft, miembro de la Fundaci\u00f3n OpenJS, est\u00e1 investigando esta funci\u00f3n como forma de reducir los ataques vectoriales y potenciar la arquitectura Node.js para una mejor experiencia. Aunque la funci\u00f3n SEA a\u00fan es experimental, representa un nuevo y emocionante avance para la comunidad Node.js.<\/p>\n<h3>Rendimiento<\/h3>\n<p>Node.js v20 viene con mejoras significativas en su tiempo de ejecuci\u00f3n, con un enfoque renovado en el rendimiento por parte del reci\u00e9n formado equipo de rendimiento de Node.js. Las mejoras incluyen optimizaciones en las partes principales del tiempo de ejecuci\u00f3n, como URL, <code>fetch()<\/code>, y <code>EventTarget<\/code>.<\/p>\n<p>Una de las mejoras notables es la reducci\u00f3n del coste de inicializaci\u00f3n de <code>EventTarget<\/code>, que se ha reducido a la mitad, lo que se traduce en un acceso m\u00e1s r\u00e1pido a todos los subsistemas que lo utilizan. Adem\u00e1s, se han utilizado llamadas V8 Fast API para mejorar el rendimiento en APIs como <code>URL.canParse()<\/code> y temporizadores.<\/p>\n<p>Otro cambio espec\u00edfico es la inclusi\u00f3n de la versi\u00f3n actualizada 2.0 de Ada, un analizador de URL r\u00e1pido y conforme a las especificaciones, escrito en C++.<\/p>\n\n<h2>Resumen<\/h2>\n<p>En este art\u00edculo, has aprendido algunas de las principales caracter\u00edsticas (experimentales y estables) y mejoras que aporta Node.js v20, como las mejoras en el motor JavaScript V8, el rendimiento, el ejecutor de pruebas y la introducci\u00f3n del modelo de permisos experimental, y las aplicaciones de ejecuci\u00f3n \u00fanica.<\/p>\n<p>Es importante saber que Node.js v14 llegar\u00e1 al final de su vida \u00fatil en abril de 2023, por lo que se aconseja empezar a planificar la actualizaci\u00f3n a Node.js v18 (LTS) o vNode.js 20 (que pronto ser\u00e1 LTS).<\/p>\n<p>\u00bfQuieres probar la \u00faltima versi\u00f3n de Node.js? Puedes hacerlo desplegando tu <a href=\"https:\/\/sevalla.com\/application-hosting\/\">aplicaci\u00f3n Node.js en Kinsta<\/a> y conseguir tus primeros 20 $ con nosotros. Ya somos compatibles con Node.js v20, lo que significa que puedes probar sus nuevas funciones y capacidades a partir de hoy.<\/p>\n<p><em>\u00a1Ahora es tu turno! \u00bfQu\u00e9 funciones o mejoras te parecen m\u00e1s interesantes en Node.js v20? \u00bfHay alguna significativa que hayamos pasado por alto? H\u00e1znoslo saber en los comentarios.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Node.js v20 ya est\u00e1 disponible! El 18 de abril de 2023 se public\u00f3 y ya est\u00e1 disponible para todo el mundo. Con esta versi\u00f3n, Node.js deber\u00eda &#8230;<\/p>\n","protected":false},"author":287,"featured_media":65365,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1311],"class_list":["post-65364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-node-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)\" \/>\n<meta property=\"og:description\" content=\"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-02T14:38:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-17T13:01:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"6084\" \/>\n\t<meta property=\"og:image:height\" content=\"3042\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)\",\"datePublished\":\"2023-05-02T14:38:29+00:00\",\"dateModified\":\"2025-01-17T13:01:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\"},\"wordCount\":1965,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\",\"name\":\"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\",\"datePublished\":\"2023-05-02T14:38:29+00:00\",\"dateModified\":\"2025-01-17T13:01:30+00:00\",\"description\":\"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg\",\"width\":6084,\"height\":3042,\"caption\":\"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3) - Kinsta\u00ae","description":"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/","og_locale":"es_ES","og_type":"article","og_title":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)","og_description":"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.","og_url":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-05-02T14:38:29+00:00","article_modified_time":"2025-01-17T13:01:30+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Joel Olawanle","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)","datePublished":"2023-05-02T14:38:29+00:00","dateModified":"2025-01-17T13:01:30+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/"},"wordCount":1965,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/node-js-20\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/","url":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/","name":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","datePublished":"2023-05-02T14:38:29+00:00","dateModified":"2025-01-17T13:01:30+00:00","description":"Node.js v20 ya est\u00e1 disponible. Echa un vistazo a las novedades de esta versi\u00f3n, incluyendo Test Runner, Permission Model, SEA y V8 JS Engine 11.3.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/node-js-20\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/node-js-20.jpg","width":6084,"height":3042,"caption":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/es\/secciones\/node-js\/"},{"@type":"ListItem","position":3,"name":"Novedades en Node.js v20 (Test Runner, Modelo de Permisos, SEA, Motor V8 JS 11.3)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/es\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/65364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=65364"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/65364\/revisions"}],"predecessor-version":[{"id":65426,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/65364\/revisions\/65426"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/translations\/dk"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/65364\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/65365"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=65364"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=65364"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=65364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}