TS5055
Emitir sobre tu propio código
Cannot write file 'src/app.js' because it would overwrite input file.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
Con `allowJs` activo, un archivo `.js` es a la vez entrada y nombre de salida. Si la salida va donde vive la entrada, el compilador sobrescribiría el archivo que acaba de leer.
Reproducción
// tsconfig.json { "compilerOptions": { "allowJs": true, "outDir": "src" } } // src/app.js — read as an input, and the exact path the emit would land on export const version = 1
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
Nada más en este catálogo se informa sobre un archivo; esto se informa sobre la compilación. `allowJs` mete `src/app.js` en el programa como fuente, y compilarlo produce JavaScript que el emisor quiere llamar `app.js` dentro de `outDir` — la misma ruta. El compilador no destruirá una entrada para satisfacer una configuración, así que se niega antes de escribir nada y toda la emisión se detiene. Por eso tampoco aparece nada en el directorio de salida: no es un aviso sobre un archivo, es una compilación que no ocurrió.
Arreglos
- 01
// tsconfig.json { "compilerOptions": { "allowJs": true, "outDir": "dist" } } // src/app.js stays an input; the emit lands in dist/ export const version = 1
Dale a la salida un directorio propio. Que entradas y salidas compartan carpeta es todo el problema, y cualquier otro arreglo se sigue de separarlas.
- 02
// tsconfig.json { "compilerOptions": { "allowJs": true, "checkJs": true, "noEmit": true } } // src/app.js is checked and left exactly as it is export const version = 1
O deja de emitir. Si un empaquetador ya construye el proyecto, TypeScript está para comprobarlo — `noEmit` lo dice, y la colisión no puede darse.
Conclusión
Decide si TypeScript construye este proyecto o solo lo comprueba. Casi siempre este error es un proyecto que respondió a las dos cosas a la vez.

