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