我收到了这个相当荒谬的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"
]
仍然出现相同的错误。
答案 0 :(得分:0)
我的猜测是,在项目/Users/alex/codes/teros/notifier-server
的某处,您有import
的{{1}}语句,例如
logging.ts
然后import {xxx} from "../my/path/logging"
模块将自动被编译器包含,而与logging.ts
中的include
和exclude
选项无关。请参阅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
找出所有包含的文件。
希望,会有所帮助。