node.js - Eroare de analiză: Nu se poate citi fișierul '.../tsconfig.json'.eslint
Eroarea Parsing error: Cannot read file '.../tsconfig.json'.eslint apare în toate fișierele .ts din folderul src, inclusiv în index.ts.
Nu am nicio idee cum să configurez setările. Problema doar arată o linie roșie și face fișierul roșu. Totuși, totul se compilează și rulează bine. Întregul proiect Node a fost creat folosind CLI-ul Firebase.
Fișierul tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017"
},
"compileOnSave": true,
"include": [
"src"
]
}
Fișierul .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",
},
},
},
};
Am încercat să repornesc VScode, să șterg memoria cache și toate, dar fără succes. Bănuiesc că trebuie să schimb unele dintre căi, dar nu sunt foarte bun la modificarea fișierelor de configurare, așa că nu vreau să strică accidental întregul proiect.
Răspuns #1
În mod implicit, project-urile (din parserOptions) sunt rezolvate relativ la directorul de lucru curent. Dacă rulezi eslint într-un director de lucru diferit de folderul care conține tsconfig.json, @typescript-eslint/parser nu va putea localiza fișierul.
Pentru a remedia acest lucru, puteți seta tsconfigRootDir la __dirname, ceea ce ar face ca parserul să rezolve configurația proiectului relativ la .eslintrc.js:
module.exports = {
// ...
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: __dirname,
sourceType: "module",
},
// ...
}
Dacă ai unele probleme cu
/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
vezi această întrebare.
Răspunsul #2
O abordare specifică VSCode, care a funcționat pentru mine, a fost să creez un folder .vscode în directorul rădăcină al proiectului și să adaug următoarea proprietate în fișierul settings.json din interiorul acestuia:
{
"eslint.workingDirectories": [
"src"
]
}
"src" ar putea fi orice director, care ar trebui să fie în domeniul de aplicare al eslint.
Răspunsul #3
Pentru cei care folosesc Angular și eslintrc.json, adăugați cele 2 stele la nodul proiectului astfel:
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": ["**/tsconfig.json"]
}
}
]
Răspuns #4
Actualizează fișierul tău eslintrc.json cu următoarea linie:
"project": "PROJECT_NAME/tsconfig.json"cu PROJECT_NAME fiind numele proiectului tău (nu un macro).
Răspunsul #5
Am rezolvat problema adăugând @typescript-eslint/parser la extends:
Răspunsul #6
O altă abordare este dacă s-a întâmplat să deschizi folderul Workspace cu un nivel mai sus decât Proiectul (așa cum s-a întâmplat în cazul meu), pur și simplu pornește un Workspace nou cu folderul ACTUAL al proiectului. Aceasta a rezolvat eroarea mea Eslint.
