El REPL y los Experimentos Rápidos
El REPL de Node.js es un shell interactivo para sondear APIs, inspeccionar objetos y validar suposiciones antes de que confirmes el código en un archivo.
Busca en todas las páginas de la documentación
El REPL de Node.js es un shell interactivo para sondear APIs, inspeccionar objetos y validar suposiciones antes de que confirmes el código en un archivo.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
node # iniciar REPL
node --env-file=.env # precargar variables de entorno en el contexto del REPL
node -e "console.log(process.version)"
node --input-type=module -e "import { ok } from 'node:assert'; ok(1)"Cuándo usarlo:
fetch única antes de conectarla a un servicioprocess o import.meta# Iniciar REPL con archivo .env (Node 20+)
node --env-file=.env.development> const { readFile } = await import('node:fs/promises')
> const raw = await readFile('package.json', 'utf8')
> const pkg = JSON.parse(raw)
> pkg.engines
{ node: '>=24.18.0 <25' }
> // Inspeccionar encabezados de fetch incorporados
> const res = await fetch('https://httpbin.org/headers')
> [...res.headers.entries()].slice(0, 3)
[
[ 'content-type', 'application/json' ],
[ 'content-length', '...' ],
[ 'date', '...' ]
]
> .save repl-session.js
> .exitLo que esto demuestra:
await de nivel superior funciona en el REPL sin envolverlo en una función asíncronaimport() dinámico carga módulos ESM incorporados dentro de la sesión REPL.save escribe cada expresión evaluada en un archivo para su posterior limpieza--env-file refleja la carga de configuración de producción durante los experimentosglobal) e imprime los resultados de las expresiones._ contiene el último resultado evaluado; _error contiene el último error lanzado (convención del REPL de Node)..help, .break, .clear) son metacomandos y no se envían a V8.| Comando | Acción |
|---|---|
.help | Lista todos los comandos de punto |
.save file | Escribe el historial de la sesión en el disco |
.load file | Ejecuta un archivo en el contexto actual |
.break | Aborta la entrada multilínea |
.editor | Abre el modo de editor multilínea |
# Ejecuta TypeScript en líneas individuales tipo REPL con tsx
npx tsx -e "const x: number = 42; console.log(x)"
# O inicia el REPL de tsx para experimentos tipados
npx tsxPara la exploración tipada, el REPL de tsx es preferible al node simple cuando necesitas interfaces y genéricos.
.save - las sesiones guardadas incluyen los prompts > y pueden carecer de importaciones. Solución: refactoriza en un módulo adecuado y añade pruebas..node_repl_history. Solución: .clear las líneas sensibles; nunca .save sesiones con secretos.require no está definido en proyectos ESM-first. Solución: usa await import() o inicia con --input-type=module.console.log(hugeArray) bloquea el terminal. Solución: usa util.inspect(obj, { depth: 2, maxArrayLength: 10 }).node:test.| Alternativa | Usar Cuándo | No Usar Cuándo |
|---|---|---|
node -e / tsx -e | Comprobaciones de una sola expresión en CI o scripts | Exploración de varios pasos |
Archivo .mjs temporal + --watch | Experimentos repetibles que vas a confirmar | Comprobaciones desechables de 10 segundos |
node:test + modo watch | Experimentos que deberían convertirse en pruebas de regresión | Inspección pura de objetos |
Depurador (node inspect) | Recorrer el código existente | Prototipar nuevas APIs desde cero |
Sí, en Node 24. Puedes await fetch(...) directamente en el prompt sin un envoltorio asíncrono.
Inicia con node --env-file=.env (Node 20+). Las variables aparecen en process.env inmediatamente.
El REPL incorporado es JavaScript. Usa npx tsx para un REPL compatible con TypeScript.
-p evalúa e imprime la expresión (implica -e). node -p "2+2" imprime 4.
Presiona .break o Ctrl+C dos veces. .break aborta sin terminar la sesión del REPL.
En ~/.node_repl_history por defecto. Establece NODE_REPL_HISTORY para cambiar la ruta.
En un proyecto con "type": "module", usa await import('pkg') en lugar de require.
Después de un error lanzado, _error lo referencia. console.error(_error) imprime la pila.
No. Nunca abras el REPL en servidores de producción; usa registros de solo lectura, métricas y reproducción local en su lugar.
node --input-type=module
> import.meta.url
'file:///...'Sí, a través de NODE_REPL_HISTORY, servidores REPL personalizados o repl.start({ prompt: 'api> ' }) programáticamente.
Copia la lógica validada en un archivo node:test y reemplaza las aserciones manuales de console.log con assert.equal.
nodeVersiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS Activo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 16 jul 2026