Error de mecanografiado "No se puede escribir el archivo... porque sobrescribiría el archivo de entrada".

Resuelto Chris Barr asked hace 7 años • 31 respuestas

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.

lista de errores de estudio visual

Aquí está mi tsconfig.jsonarchivo .

{
  "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?

Chris Barr avatar Mar 05 '17 21:03 Chris Barr
Aceptado

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!
    ]
}
Vince Horst avatar Feb 15 '2018 01:02 Vince Horst

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

Donniewiko avatar Mar 09 '2017 09:03 Donniewiko

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' 
jcampbell1 avatar Oct 21 '2019 20:10 jcampbell1

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 allowJsen 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.
  • En su paquete.json:
    • Establezca mainen "í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 de typings) en "indexar". No es necesario agregar las extensiones (.d.ts o .js).

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.

Jai avatar Jun 24 '2019 10:06 Jai