node.js - 解析錯誤:無法讀取文件 '.../tsconfig.json'.eslint
錯誤 Parsing error: Cannot read file '.../tsconfig.json'.eslint 出現在 src 資料夾中所有的 .ts 文件中,包括 index.ts。
我完全不知道如何設置配置。問題只是顯示一條紅線,並使文件變紅。然而,一切都可以編譯並正常運行。整個 Node 項目都是使用 Firebase CLI 創建的。
tsconfig.json 檔案:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017"
},
"compileOnSave": true,
"include": [
"src"
]
}
.eslintrc.js 文件:
module.exports = {
env: {
browser: true,
es6: true,
node: true,
},
extends: [
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "tsconfig.json",
sourceType: "module",
},
plugins: [
"@typescript-eslint",
"import",
],
rules: {
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/no-empty-function": "error",
"@typescript-eslint/no-empty-interface": "warn",
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/triple-slash-reference": "error",
"@typescript-eslint/unified-signatures": "warn",
"comma-dangle": "warn",
"constructor-super": "error",
eqeqeq: ["warn", "always"],
"import/no-deprecated": "warn",
"import/no-extraneous-dependencies": "error",
"import/no-unassigned-import": "warn",
"no-cond-assign": "error",
"no-duplicate-case": "error",
"no-duplicate-imports": "error",
"no-empty": [
"error",
{
allowEmptyCatch: true,
},
],
"no-invalid-this": "error",
"no-new-wrappers": "error",
"no-param-reassign": "error",
"no-redeclare": "error",
"no-sequences": "error",
"no-shadow": [
"error",
{
hoist: "all",
},
],
"no-throw-literal": "error",
"no-unsafe-finally": "error",
"no-unused-labels": "error",
"no-var": "warn",
"no-void": "error",
"prefer-const": "warn",
},
settings: {
jsdoc: {
tagNamePreference: {
returns: "return",
},
},
},
};
我已經嘗試過重新啟動 VScode、清除快取,但都沒有用。我猜我需要更改一些路徑,但我對更改配置文件不太擅長,所以我不想意外地把整個專案弄壞。
答案#1
預設情況下,project(在 parserOptions 中)是相對於當前工作目錄解析的。如果你在與包含 tsconfig.json 的資料夾不同的工作目錄下運行 eslint,@typescript-eslint/parser 將無法定位該文件。
要解決此問題,您可以將 tsconfigRootDir 設置為 __dirname,這將使解析器相對於 .eslintrc.js 解析專案配置:
module.exports = {
// ...
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: __dirname,
sourceType: "module",
},
// ...
}
如果你正在遇到一些困難
/path/to/.eslintrc.js
0:0 error Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: .eslintrc.js.
The file must be included in at least one of the projects provided
看這個問題。
答案#2
對我有效的一種 VSCode 特定方法是在根目錄項目資料夾中創建一個 .vscode 資料夾,並在其中的 settings.json 文件中添加以下屬性:
{
"eslint.workingDirectories": [
"src"
]
}
這個 "src" 可以是任何目錄,它應該在 eslint 的範圍內。
答案#3
對於使用 Angular 和 eslintrc.json 的人,將 2 顆星添加到專案節點,如下所示:
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": ["**/tsconfig.json"]
}
}
]
答案#4
使用以下行更新您的 eslintrc.json 文件:
"project": "PROJECT_NAME/tsconfig.json"PROJECT_NAME 是您的專案名稱(不是宏)。
答案#5
我透過在 extends 中加入 @typescript-eslint/parser 來解決它:
答案#6
另一種方法是,如果你不小心打開了位於專案上一層的工作區資料夾(就像我的情況),只需使用實際的專案資料夾建立一個新的工作區。這解決了我的 Eslint 錯誤。
