Saltar al contenido principal
Node.js

Solución: fetch is not defined en Node.js

Node.js lanza ReferenceError al usar fetch() porque no está disponible de forma nativa en versiones antiguas. Soluciones para Node 16, 17 y cómo usar el fetch nativo en Node 18+.

Error: ReferenceError: fetch is not defined

¿Por qué ocurre?

La API fetch es nativa del navegador. Node.js solo la incluyó de forma estable a partir de la versión 18. Si usas Node 16 o 17, fetch no existe globalmente y tienes que usar un polyfill o una librería alternativa.

Solución paso a paso

Comprueba tu versión de Node primero:

node --version

Si tienes Node 18 o superior — fetch ya está disponible:

// Funciona directamente, sin instalar nada
const res = await fetch('https://api.example.com/datos');
const data = await res.json();

Si aun así falla, puede ser que tu tsconfig.json no incluya las librerías correctas (TypeScript):

{
  "compilerOptions": {
    "lib": ["ES2022", "DOM"]
  }
}

Si tienes Node 16 o 17 — usa node-fetch:

npm install node-fetch

// CommonJS
const fetch = require('node-fetch');

// ESM import fetch from 'node-fetch';

const res = await fetch('https://api.example.com/datos'); const data = await res.json();

Alternativa — usa axios (funciona en todas las versiones):

npm install axios

import axios from 'axios';

const { data } = await axios.get('https://api.example.com/datos');

Alternativa nativa en Node.js (todas las versiones) — https module:

const https = require('https');

function get(url) { return new Promise((resolve, reject) => { https.get(url, res => { let body = ''; res.on('data', chunk => body += chunk); res.on('end', () => resolve(JSON.parse(body))); }).on('error', reject); }); }

Cómo evitarlo en el futuro

Actualiza a Node 18 LTS o superior — tiene fetch nativo, mejor rendimiento y soporte a largo plazo. Usa `nvm` (Mac/Linux) o `nvm-windows` (Windows) para gestionar múltiples versiones de Node fácilmente.

Node.jsfetchHTTPError

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.