【问题标题】:Getting a storm of "error TS5055" messages on every TypeScript Compile in VS Code在 VS Code 中的每个 TypeScript Compile 上都会收到大量“错误 TS5055”消息
【发布时间】:2017-03-20 12:53:57
【问题描述】:

我正在尝试使用 VS Code 1.6.1 将基于 JavaScript 的 express 项目转换为 TypeScript。我现在可以在 TypeScript 中添加新文件并将它们编译为 JavaScript。但是,每次编译 TypeScript 文件时,我都会得到一长串错误 - 每个现有(旧版)JavaScript 文件都有一个错误 - 说:

错误 TS5055:无法写入文件 XYZ.js,因为它会覆盖输入文件

我该如何阻止这种情况?

我的 tsconfig 如下所示:

{
    "compilerOptions": {
        "module": "commonjs",
        "sourceMap": true,
        "watch": true,
        "allowJs": true
    }
}

【问题讨论】:

    标签: typescript visual-studio-code


    【解决方案1】:

    出现这个问题是因为 TypeScript 编译器试图转换所有内容,包括已经是 JavaScript 的文件,在这种情况下,它会抱怨它会覆盖其输入,这是可以理解的。我发现没有“包含”和“排除”语句的组合可以阻止这种行为。

    解决办法是在compilerOptions中添加一个新的字段“outDir”,所以看起来像这样

    {
        "compilerOptions": {
            "module": "commonjs",
            "sourceMap": true,
            "watch": true,
            "allowJs": true,
            "outDir": "generated"
        }
    }
    

    这将导致 tsc 将您项目中的所有 ts 和 js 复制到指定的文件夹。不会再有那些讨厌的 TS5055 错误。

    如果您的项目中的导入引用都是相对的,这应该没问题。否则,例如,如果您的 Node.js 项目在顶层使用“公共”文件夹,您可能必须相应地修改代码中的路径引用。

    【讨论】:

      【解决方案2】:

      在生成d.ts 时也会发生错误tsc 默认获取在输出目录和子目录中找到的所有文件。

      假设您的输出位于out 目录中,您必须在 tsconfig.json 中排除它:

      "compilerOptions": {
        // All the options you want...
      
        // Redirect output structure to the directory
        "outDir": "out"
      
        // Exclude here the directories you want ts do not compile...
        "exclude": [
          "out"
        ]
      }
      

      【讨论】:

      • exclude 已被移至根级别,我在 TS v4.4.4 上进行了测试
      【解决方案3】:

      将 tsconfig.json 中的 allowJstrue 更改为 false 将告诉 typescript 编译器不要转译 javascript 文件。这应该可以解决问题。

      https://www.typescriptlang.org/docs/handbook/compiler-options.html#compiler-options

      【讨论】:

      • 这正是我们想要的
      【解决方案4】:

      如果不需要编译,只检查错误,可以使用:"noEmit": true

      【讨论】:

        【解决方案5】:

        我的问题有点不同 - 将新的 typescript 文件添加到现有配置中。
        结果发现其中的导入存在问题,导致循环,这就是我的情况下编译失败的原因。

        【讨论】:

        • 我有类似的东西。 A 有"files": ["index.ts"] 并添加了"index.test.ts"。 index.test.ts 包含import { ... } from '.',我将其更改为import { ... } from './index' 以解决问题。
        猜你喜欢
        • 2015-11-09
        • 2021-11-27
        • 2016-11-27
        • 2022-11-09
        • 2021-12-27
        • 2023-02-08
        • 2022-11-01
        • 2021-11-17
        • 2021-10-15
        相关资源
        最近更新 更多