Hola, hoy te vengo a contar sobres grandes novedades que nos trae NodeJS su versión 18 🎉.
Nos vamos a centrar en tres características que han alegrado a toda la comunidad en general.
- Soporte experimental para fetch.
- Un propio test runner.
- El motor de V8 en la versión 10.1.
Recordemos que NodeJS es un runtime de JavaScript construido sobre el motor de Google V8 que nos permite ejecutar JavaScript en cualquier lugar y normalmente cuenta con dos versiones, una que es la versión LTS (Soporte a largo plazo) y otra que es la más actual, en este caso la versión 18.

Soporte experimental para fetch
Esta es la característica que más ha gustado a la comunidad ya que por fin podremos usar la función fetch
dentro del contexto de NodeJS. Recuerda que JavaScript puede correr de forma directa en un navegador y en ese contexto es muy natural usar la función fetch
para hacer peticiones, por ejemplo a alguna API de la siguiente manera:
function getProducts() {
fetch('https://api.escuelajs.co/api/v1/products')
.then(response => response.json())
.then(data => console.log(data));
}
Con el código de arriba puedes hacer una solicitud y poder obtener el resultado, también lo puedes implementar usando el modo async/await
, de la siguiente manera:
async function getProducts() {
const response = await fetch('https://api.escuelajs.co/api/v1/products');
const data = await response.json();
console.log(data);
}
En los ejemplos vistos anteriormente vemos la forma más normal de hacerlo PERO solo funciona en los navegadores, es decir que no se podía usar en otros contextos, por ejemplo del lado del servidor en donde también queremos hacer peticiones o conectarnos a otros servicios por medio de fetch
.
Pero ahora en la versión 18 se está trabajando en el soporte experimental para que fetch
se pueda ejecutar. Esta sería la manera de hacerlo con NodeJS:
const res = await fetch('https://api.escuelajs.co/api/v1/products');
if (res.ok) {
const data = await res.json();
console.log(data);
}
Así que ahora vamos a poder solicitudes usando fetch
como en los navegadores.
Un propio test runner.
Hacer pruebas es de vital importancia en nuestros sistemas y es la manera correcta en la cual podemos gestionar el riesgo de que ocurran errores en producción, normalmente para escribir pruebas en NodeJS usamos librerías muy comunes como Jest, AVA, Supertest, MochaJS etc. Pero ahora desde la versión 18, NodeJS tiene una forma nativa de implementar pruebas, la forma de usar esta nueva API es de la siguiente manera:
import test from 'node:test';
import assert from 'node:assert';
test('synchronous passing test', (t) => {
// This test passes because it does not throw an exception.
assert.strictEqual(1, 1);
});
test('synchronous failing test', (t) => {
// This test fails because it throws an exception.
assert.strictEqual(1, 2);
});
También es posible usar el contexto de la función test()
para crear sub pruebas, de la siguiente manera:
import test from 'node:test';
import assert from 'node:assert';
test('top level test', async (t) => {
await t.test('subtest 1', (t) => {
assert.strictEqual(1, 1);
});
await t.test('subtest 2', (t) => {
assert.strictEqual(2, 2);
});
});
Debes tener en cuenta que este módulo de pruebas en especial tiene el prefijo node:
a la hora de importarlo, si no lo haces de esta manera NodeJS tratará de buscar el paquete test
como paquete externo dentro de tus node_modules
.
El motor de V8 en la versión 10.1
En esta versión 18 de NodeJS se soporta la versión 10.1 del motor de V8, el cual trae las siguientes características:
- Los métodos de findLast y findLastIndex en arrays.
- Mejoras a la API de Intl.Locale.
- La función Intl.supportedValuesOf.
¿Qué te parecen estas características que nos trae la versión 18 de NodeJS? 👇 Te leo los comentarios.
Curso de Fundamentos de Node.js