web-dev-qa-db-fra.com

Erreur typographique "Impossible d'écrire le fichier ... car cela écraserait le fichier d'entrée"

Dans mon projet TypeScript 2.2.1 dans Visual Studio 2015 Update 3, des centaines d'erreurs apparaissent dans la liste des erreurs, telles que:

Impossible d'écrire le fichier 'C:/{{mon-projet}}/node_modules/buffer-shims/index.js' car il écraserait le fichier d'entrée.

Ça ressemble à ça tout le temps. Cela n'empêche pas la construction et tout fonctionne correctement, mais la liste des erreurs est distrayante et il est difficile de localiser les erreurs "réelles" lorsqu'elles se produisent.

 visual studio error list

Voici mon fichier tsconfig.json

{
  "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"]
}

Comment puis-je me débarrasser de toutes ces erreurs?

19
Chris Barr

Il semble que ce problème ait été résolu pour moi en mettant à jour TypeScript 2.3.x 

De plus, l'utilisation de Visual Studio 2017 représentait également une grande amélioration. Je vous recommande fortement de faire les deux de ces mises à jour cependant.

1
Chris Barr

J'ai le même problème. Dans mon cas, c'était le résultat de l'option: allowJs: true

Donc, je devais fondamentalement enlever cette ligne pour me débarrasser des erreurs ... Je ne le vois pas dans votre code, mais peut-être que cela vous aidera ici.

Bonne chance!

18
Donniewiko

Dans mon cas, j’utilisais l’option outFile mais n’excluais pas le répertoire de destination des entrées.

// Bad
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*"
    ]
}

Tout ce que nous avons à faire est d’exclure les goodies dans le répertoire outDir :

// Good
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*",
        "./built/**/*" // This is what fixed it!
    ]
}
14
Vince Horst

L'ajout de "outDir": "./dist" à compilerOptions dans tsconfig.json a fonctionné pour moi lorsque j'ai eu cette erreur. Je suis presque sûr qu'il ne s'agit que de l'extension CodeScript TypeScript de Visual Studio générant cette erreur. J'utilise ts-loader avec Webpack et non pas directement avec le compilateur tsc, de sorte que je n'ai pas eu à spécifier outDir car la configuration de Webpack contrôle cela, mais si cela rend l'extension de code VS heureuse, c'est bien.

2
Eric Pitcher

Set outDir.

"outDir": "./",

cet indice est que si vous ne définissez pas outDir, la sortie sera placée directement à côté du fichier d'entrée. Après allowJs, le fichier JavaScript sera également compilé. Ensuite, le fichier JavaScript compilé écrasera votre fichier source. Cela ne fait que vous rappeler cela.

1
ChenCong Shi

J'ai eu ce problème aussi. Dans mon cas, j'ai restauré la version originale du fichier \tools\JsEngine\typescriptServices.js et le problème a été résolu. 

J'ai constaté que typescriptServices.js avait été modifié par Visual Studio en raison de la fin de la ligne (CRLF or CR) et que, par la suite, VS ne pouvait pas l'exécuter correctement.

0
Nguyen Duc Tien

J'ai résolu ce problème en supprimant "declaration": true de mon fichier tsconfig.json. Bien que maintenant je n'ai plus de déclarations donc ça n'a pas aidé.

0
AskYous

Probablement la racine du problème est 2 fichiers générant le même module. Donc, si on a deux fichiers dans le même dossier avec le même nom mais avec des extensions différentes conduit à cette erreur.

par exemple: 

\index.ts
\index.tsx

Solution change l'un de ces noms de fichiers en un autre.

0
mkb