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.
¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:
Generador de Prompts