El error Parsing error: Cannot read file '.../tsconfig.json'.eslint se muestra en todos los archivos .ts en la carpeta src , incluido index.ts .
No tengo idea de cómo configurar configuraciones. El problema solo muestra una línea roja y hace que el archivo sea rojo. Sin embargo, todo se compila y funciona bien. Todo el proyecto de Node se creó con firebase CLI.
archivo tsconfig.json :
{ "compilerOptions": { "module": "commonjs", "noImplicitReturns": true, "noUnusedLocals": true, "outDir": "lib", "sourceMap": true, "strict": true, "target": "es2017" }, "compileOnSave": true, "include": [ "src" ] } Archivo .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", }, }, }, };Intenté reiniciar VScode, borrar el caché y todo fue en vano. Supongo que necesito cambiar algunas de las rutas, pero no soy muy bueno cambiando los archivos de configuración, así que no quiero romper accidentalmente todo el proyecto.
De forma predeterminada, los project (en parserOptions ) se resuelven en relación con el directorio de trabajo actual. Si ejecuta eslint en un directorio de trabajo diferente a la carpeta que contiene tsconfig.json , @typescript-eslint/parser no podrá ubicar el archivo.
Para solucionar esto, puede establecer tsconfigRootDir en __dirname , lo que haría que el analizador resuelva la configuración del proyecto relativa a .eslintrc.js :
module.exports = { // ... parserOptions: { project: "tsconfig.json", tsconfigRootDir: __dirname, sourceType: "module", }, // ... }Si tienes problemas con
/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 providedver esta pregunta .
Un enfoque específico de VSCode que funcionó para mí fue crear una carpeta .vscode en el directorio raíz del proyecto y agregar la siguiente propiedad al archivo settings.json dentro de ella:
{ "eslint.workingDirectories": [ "src" ] } El "src" podría ser cualquier directorio, que debería estar dentro del alcance de eslint.
Actualice su archivo eslintrc.json con la siguiente línea:
"project": "PROJECT_NAME/tsconfig.json"
siendo PROJECT_NAME el nombre de su proyecto (no una macro).