TypeScript错误:无法写入文件' index.d.ts'因为它会覆盖输入文件

时间:2016-05-03 20:22:16

标签: typescript

运行tsc

时出现问题
error TS5055: Cannot write file 'index.d.ts' because it would overwrite input file.

我的tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "declaration": true,
    "newLine": "LF",
    "preserveConstEnums": true,
    "pretty": true,
    "experimentalDecorators": true
  },

  "exclude": [
    "node_modules",
    "typings"
  ]
}

这个问题解决了:

  1. index.ts
  2. 中排除tsconfig
  3. 运行tsc index.ts
  4. declaration
  5. 中关闭tsconfig
  6. index重命名为其他名称!
  7. 我在package.json中更改typescript主文件时遇到同样的问题 例如:将index.ts重命名为foo.ts

    package.json更改为

    "typescript": {
      "main": "foo.ts"
    }
    

    tsc错误:

    error TS5055: Cannot write file 'index.d.ts' because it would overwrite input file.
    

    文件内容无任何问题,任何代码内容都有同样的问题!

    我能做些什么来修复它?

    源代码:https://github.com/AliMD/Node.js-Telegram-Bot-API/tree/v0.0.2-0
    提前谢谢。

5 个答案:

答案 0 :(得分:4)

在您的示例文件夹中,您可以编写import * as test from "../";
https://github.com/AliMD/Node.js-Telegram-Bot-API/blob/v0.0.2/examples/test-server.ts#L1

它应该会加载index.tsindex.d.tspackage.json“typings”字段。
这就是问题所在。您的package.json确实说index.d.ts是此套餐的定义文件,请参阅https://github.com/AliMD/Node.js-Telegram-Bot-API/blob/v0.0.2/package.json#L9
因此import * as test from "../";将加载package.json,加载打字字段,然后加载index.d.ts并解决问题。

<强>解决方案

  1. 您应该导入索引文件而不是根文件夹(推荐)

    从“../ index”导入*作为测试;

  2. 让您的输出转到不同的位置,例如\lib\index.d.ts

  3. 在两个解决方案中你应该加载目标文件而不是文件夹,因为你不再加载根文件夹,问题就会解决。

答案 1 :(得分:1)

Perahaps更好的方法是从构建中排除target目录。关键是在outDirexclude键中包含相同的目录:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": false,
        "sourceMap": true,
        "experimentalDecorators": true,
        "outDir": "target",
        "declaration": true
    },
    "exclude": [
        "node_modules",
        "target"
    ]
}

答案 2 :(得分:1)

非常感谢其他所有人的回答,但是对我来说,这个问题要简单得多(而且愚蠢)。我让WebStorm为我选择了最佳的导入语句,却忽略了它包含“ dist”目录中的一个文件(这是我将输出设置为的文件。

一旦找到原因,该错误就更有意义了,因为它确实试图写入用作输入的输出文件。

答案 3 :(得分:0)

我遇到了同样的问题,修复起来非常简单。我删除了node_modules,然后删除了typings文件夹。

在package.json中的

我在

中有这些
scripts: {
    ...
    "tsc": "tsc",
    "typings": "typings"
    ...
}

然后运行命令:

npm安装
npm run tsc
npm run typings install

答案 4 :(得分:0)

就我而言,即使我已经设置了以下内容,我还是在 tsconfig.json 中丢失了 "include": ["./src/**/*.ts"]

    "compilerOptions": {
        "outDir": "./build",
        "rootDir": "./src"
    },

Typescript 可能对它需要包含哪些文件感到困惑,并且可能认为我在 ./build/index.d.ts 中构建的文件是一个输入文件。