错误TS6059:文件不在“ rootDir”下。.“ rootDir”应包含所有源文件

时间:2019-08-09 01:29:12

标签: typescript tsc

我收到了这个相当荒谬的tsc移植错误:

  

错误TS6059:文件   “ /Users/alex/codes/interos/teros-cli/src/logging.ts”不在   'rootDir''/用户/ alex /代码/ teros / notifier-server / src'。 'rootDir'   应该包含所有源文件。

我的PWD为/Users/alex/codes/teros/notifier-server/Users/alex/codes/teros/notifier-server/tsconfig.json的tsconfig.json文件为:

{
  "compilerOptions": {
    "outDir": "dist",
    "allowJs": false,
    "pretty": true,
    "resolveJsonModule": true,
    "sourceMap": false,
    "skipLibCheck": true,
    "rootDir": "src",
    "declaration": false,
    "baseUrl": ".",
    "target": "es2018",
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "allowUnreachableCode": true,
    "lib": [
      "es2017",
      "es2018"
    ]
  },
  "compileOnSave": false,
  "include": [
    "src"
  ]
}

这似乎是一个错误。.由于teros-cli dir在PWD之外,由单独的tsconfig.json文件控制。

我甚至将此字段更改为:

  "include": [
    "/Users/alex/codes/teros/notifier-server/src"
  ],
  "exclude": [
    "/Users/alex/codes/teros/teros-cli"
  ]

仍然出现相同的错误。

1 个答案:

答案 0 :(得分:0)

我的猜测是,在项目/Users/alex/codes/teros/notifier-server的某处,您有import的{​​{1}}语句,例如

logging.ts

然后import {xxx} from "../my/path/logging" 模块将自动被编译器包含,而与logging.ts中的includeexclude选项无关。请参阅TypeScript常见问题解答here。没关系,项目路径之外还有另一个tsconfig.json。当您从项目目录中使用tsconfig.json进行编译时,编译器将仅考虑该tsc。如果没有配置文件,则只有它会向上搜索父目录,直到找到一个为止(请参见here)。

要导致您的tsconfig.json错误:

rootDir必须设置为一个文件夹,该文件夹是您输入文件(compiler options all 的根目录。就您而言,您有rootDir。并且"rootDir": "src"'/Users/alex/codes/interos/teros-cli/src/logging.ts'之外。有关/Users/alex/codes/teros/notifier-server/src的工作方式的更多信息,请参见this post

您的解决方案取决于您如何将rootDir与项目集成。 一个简单的解决方法是从编译器选项中删除logging.ts。如果未设置,则自动从所有输入文件列表中计算"rootDir": "src"compiler options)。 您可以按rootDir找出所有包含的文件。

希望,会有所帮助。