Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing error: Cannot read file '.../tsconfig.json'.eslint

The error Parsing error: Cannot read file '.../tsconfig.json'.eslint shows in all .ts files in the src folder including index.ts.

I have no idea how to set up configs. The issue just shows a red line and makes the file red. However, everything compiles and run fine. The entire Node project was created using the firebase CLI.

tsconfig.json file:

{   "compilerOptions": {     "module": "commonjs",     "noImplicitReturns": true,     "noUnusedLocals": true,     "outDir": "lib",     "sourceMap": true,     "strict": true,     "target": "es2017"   },   "compileOnSave": true,   "include": [     "src"   ] } 

.eslintrc.js file:

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",       },     },   }, }; 

I had tried restarting VScode, clearing the cache, and all to no avail. I am guessing I need to change some of the paths but I am not very good at changing the config files so I don't want to accidentally break the entire project.

like image 778
darren z Avatar asked Nov 20 '20 16:11

darren z


People also ask

Can not read file Tsconfig Eslint json?

To solve the error "Parsing Error: Cannot read file 'tsconfig. json'", update your . eslintrc. js file to set the tsconfigRootDir option to __dirname to force eslint to resolve your project configuration relative to the folder where .

What is Tsconfig base json?

The tsconfig. json file specifies the root files and the compiler options required to compile the project. JavaScript projects can use a jsconfig. json file instead, which acts almost the same but has some JavaScript-related compiler flags enabled by default.


1 Answers

By default, the projects (in parserOptions) are resolved relative to the current working directory. If you run eslint in a different working directory to the folder containing tsconfig.json, @typescript-eslint/parser will not be able to locate the file.

To fix this, you can set tsconfigRootDir to __dirname, which would make the parser resolve the project configuration relative to .eslintrc.js:

module.exports = {   // ...   parserOptions: {     project: "tsconfig.json",     tsconfigRootDir: __dirname,     sourceType: "module",   },   // ... } 

If you’re getting some trouble with

/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 

see this question.

like image 60
cherryblossom Avatar answered Sep 29 '22 19:09

cherryblossom