在Visual Studio 2015 Update 3中的Typescript 2.2.1项目中,我在错误列表中得到了数百个错误,例如:

不能写入文件'C:/{{my-project}}/node_modules/buffer-shims/index.js',因为它会覆盖输入文件。

它一直都是这样的。它实际上并没有阻止构建,并且一切都可以正常工作,但是错误列表会分散注意力,并且很难在发生“真正的”错误时定位它们。

这是我的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"]
}

我怎样才能消除这些错误呢?


当前回答

我也遇到了错误:无法写入文件'xx\xxx.js',因为它会覆盖输入文件。

我发现:

如果未指定outDir, .js文件将在生成它们的.ts文件的同一目录中生成。

为了避免意外覆盖源文件,编译器将显示此错误。

您需要指定outDir,或者设置noEmit: true,以避免生成类似JavaScript源代码的编译器输出文件。

其他回答

这个问题似乎已经通过更新到Typescript 2.3.x解决了

此外,使用Visual Studio 2017也是一个很大的改进。不过,我强烈建议您进行这两种更新。

我遇到同样的问题,我尝试了以上的解决方案。没有一个对我有效。 然后删除构建文件夹在我的case - lib和重新运行构建cmd为我工作。

我也遇到了错误:无法写入文件'xx\xxx.js',因为它会覆盖输入文件。

我发现:

如果未指定outDir, .js文件将在生成它们的.ts文件的同一目录中生成。

为了避免意外覆盖源文件,编译器将显示此错误。

您需要指定outDir,或者设置noEmit: true,以避免生成类似JavaScript源代码的编译器输出文件。

正如GitHub问题中所建议的那样,理解这个问题的最佳选择是使用tracerresolution标志启动tsc命令

tsc - traceResolution

问题的根源可能是两个文件生成了相同的模块。因此,如果在同一个文件夹中有两个名称相同但扩展名不同的文件,则会导致此错误。

eg:

\index.ts
\index.tsx

解决方案是将其中一个文件名更改为其他名称。