Saltar al contenido principal
TypeScript

Solución: Cannot find name 'process' — tipos de Node.js no instalados en TypeScript

TypeScript no reconoce process, __dirname, Buffer u otras APIs globales de Node.js porque faltan los tipos @types/node. Instalación y configuración correcta.

Error: Cannot find name 'process'. Do you need to install type definitions for node?

¿Por qué ocurre?

TypeScript no conoce las APIs globales de Node.js (process, Buffer, __dirname, setTimeout del server, etc.) a menos que instales el paquete `@types/node`. Sin él, el compilador trata esas variables como desconocidas.

Solución paso a paso

Instala @types/node:

npm install -D @types/node

Configura tsconfig.json para incluir los tipos:

{
  "compilerOptions": {
    "types": ["node"],
    // o añádelos a lib si es necesario:
    "lib": ["ES2022"]
  }
}

Si el error persiste después de instalar:

# 1. Reinicia el servidor de TypeScript en VS Code
# Ctrl+Shift+P → "TypeScript: Restart TS Server"

# 2. Comprueba que se instaló correctamente ls node_modules/@types/node

# 3. Borra node_modules y reinstala rm -rf node_modules && npm install

Caso — proyecto mixto (frontend + backend en el mismo repo):

// tsconfig.json del frontend — NO incluir tipos de node (evita conflictos)
{
  "compilerOptions": {
    "lib": ["DOM", "ES2022"],
    "types": [] // excluye @types/node del frontend
  }
}

// tsconfig.node.json del backend/config { "compilerOptions": { "types": ["node"] }, "include": ["vite.config.ts", "server/**"] }

Uso de process.env con tipos correctos en TypeScript:

// process.env devuelve string | undefined — tipado correcto:
const port = process.env.PORT ?? '3000';
const portNumber = parseInt(port, 10);

// Con validación y tipo string garantizado: const secret = process.env.JWT_SECRET; if (!secret) throw new Error('JWT_SECRET no definido'); // Aquí TypeScript sabe que secret es string (no undefined) jwt.sign(payload, secret);

Tipos globales de Node.js más usados que requieren @types/node:

process        // process.env, process.exit(), process.argv
Buffer         // Buffer.from(), Buffer.alloc()
__dirname      // directorio del archivo actual (solo CJS)
__filename     // ruta del archivo actual (solo CJS)
require        // (solo CJS)
setTimeout     // versión de Node (devuelve NodeJS.Timeout, no number)

Cómo evitarlo en el futuro

Instala `@types/node` como dependencia de desarrollo en cualquier proyecto TypeScript que corra en Node.js. En proyectos Vite/Next.js, configura tsconfigs separados para frontend y backend para evitar que las APIs de Node contaminen el código del cliente.

Guías relacionadas

Más errores de TypeScript

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