Error de mecanografiado "No se puede escribir el archivo... porque sobrescribiría el archivo de entrada".
En mi proyecto Typecript 2.2.1 en Visual Studio 2015 Update 3, recibo cientos de errores en la lista de errores como:
No se puede escribir el archivo 'C:/{{my-project}}/node_modules/buffer-shims/index.js' porque sobrescribiría el archivo de entrada.
Se ve así todo el tiempo. En realidad, no impide la compilación y todo funciona bien, pero la lista de errores distrae y es difícil localizar errores "reales" cuando ocurren.
Aquí está mi tsconfig.json
archivo .
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": ".",
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"sourceMap": true,
"target": "ES5",
"forceConsistentCasingInFileNames": true,
"strictNullChecks": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"typeRoots": [],
"types": [] //Explicitly specify an empty array so that the TS2 @types modules are not acquired since we aren't ready for them yet.
},
"exclude": ["node_modules"]
}
¿Cómo puedo deshacerme de todos estos errores?
En mi caso, estaba usando la opción outDir pero sin excluir el directorio de destino de las entradas:
// Bad
{
"compileOnSave": true,
"compilerOptions": {
"outDir": "./dist",
"allowJs": true,
"target": "es5",
"allowUnreachableCode": false,
"noImplicitReturns": true,
"noImplicitAny": true,
"typeRoots": [ "./typings" ],
"outFile": "./dist/combined.js"
},
"include": [
"./**/*"
],
"exclude": [
"./plugins/**/*",
"./typings/**/*"
]
}
Todo lo que tenemos que hacer es excluir los archivos en outDir :
// Good
{
"compileOnSave": true,
"compilerOptions": {
"outDir": "./dist",
"allowJs": true,
"target": "es5",
"allowUnreachableCode": false,
"noImplicitReturns": true,
"noImplicitAny": true,
"typeRoots": [ "./typings" ],
"outFile": "./dist/combined.js"
},
"include": [
"./**/*"
],
"exclude": [
"./plugins/**/*",
"./typings/**/*",
"./dist/**/*" // This is what fixed it!
]
}
Tengo el mismo problema. En mi caso fue resultado de la opción: allowJs: true
.
Básicamente, tuve que eliminar esa línea para deshacerme de los errores. No lo veo en tu código, pero quizás te ayude aquí.
Me encontré con este problema debido a que VSCode completa automáticamente un archivo en la dist/
carpeta.
import { SomeClass } from '../../dist/xxx/someclass'
Para resolver el problema simplemente arregle la importación:
import { SomeClass } from './someclass'
Hay varias causas posibles para esto.
- En tu tsconfig.json:
- Establezca
outDir
"dist" o el nombre de otra carpeta del mismo nivel. (el prefijo './' no es necesario). Aquí es donde van los archivos de compilación. - Establezca
allowJs
en falso o elimine la línea. Nota: habilitado, enableJs entrará en conflicto con la configuración/marca de declaración. No está habilitado de forma predeterminada. - Incluya "dist" (o su carpeta de compilación) en
exclude
.
- Establezca
- En su paquete.json:
- Establezca
main
en "índice" o algún otro nombre elegido. No coloque el prefijo con la carpeta de compilación (por ejemplo, "dist/index"), ni el innecesario "./". - Establezca
types
(alias moderno detypings
) en "indexar". No es necesario agregar las extensiones (.d.ts o .js).
- Establezca
Aunque puede hacerlo de un millón de maneras diferentes, en aras de la simplicidad y el desarrollo de la comprensión, es mejor ceñirse a las prácticas comunes al principio, como usar archivos "dist", simples tsconfig.json y package.json en el mismo nivel en el árbol. , etcétera. Por supuesto, explorar los archivos de sus node_modules también profundizaría su comprensión, pero hay cosas más gratificantes en la vida.