29 typescript tsc
我收到了这个相当无意义的 tsc 转译错误:
错误 TS6059:文件“/Users/alex/codes/interos/teros-cli/src/logging.ts”不在“rootDir”“/Users/alex/codes/teros/notifier-server/src”下。'rootDir' 应包含所有源文件。
我的 PWD/Users/alex/codes/teros/notifier-server和 tsconfig.json 文件/Users/alex/codes/teros/notifier-server/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"
]
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个bug..since TEROS-CLI dir是PWD外,并通过单独的tsconfig.json文件管理。
我什至将此字段更改为:
"include": [
"/Users/alex/codes/teros/notifier-server/src"
],
"exclude": [
"/Users/alex/codes/teros/teros-cli"
]
Run Code Online (Sandbox Code Playgroud)
仍然得到同样的错误。
for*_*d04 32
rootDir?rootDir设置为包含所有源文件的根文件夹。如果未指定,TS 将自动为所有输入选择一个合适的父文件夹。rootDir也决定了输出目录。
我的猜测是你有一个import关于logging.ts某处的声明notifier-server:
import {logger} from "@teros-cli/logging" // or similar
Run Code Online (Sandbox Code Playgroud)
然后logging.ts模块将被自动包含编译器,无论include和exclude选项tsconfig.json。检查所有包含文件的一种方法是tsc --listFiles.
tsconfig.json外面的文件在notifier-server这里没有帮助。编译器每次编译只选取一个配置,tsc并可选择拉取继承的配置。如果在notifier-server项目根目录(您开始的地方tsc)中找不到,则编译器只会向上搜索父目录链,直到找到配置。
一种解决方法是"rootDir": "src"从编译器选项中删除,因此它会自动设置。注意:rootDir然后将两个项目都视为输入!
替代方案:您可以添加logging.ts包含在notifier-server/src项目中的单独模块并删除外部import.
希望,这有帮助!
paths我通过复制 s 得到了这个错误tsconfig。删除后者解决了这个问题:
// ./tsConfig.json
"paths": {
"@myPackage": ["./myPackage/index.ts"],
},
// ./MY_OTHER_PACKAGE/tsConfig.json
"paths": {
"@myPackage": ["../myPackage/index.ts"]
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34665 次 |
| 最近记录: |