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.

TypeScriptNode.jstiposErrorconfiguración

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