node.js - Typescript/Eslint kastar "Kan inte läsa filen tsconfig.json" i varje projekt jag startar
I andra trådar har jag läst att problemet kan uppstå när eslint och tsconfig.json inte finns i samma arbetsmapp, men jag har alla filer i projektets rotmapp. På något sätt, efter att ha initierat projektet, verkar det fel som kastas försöka hitta tsconfig.json i föräldramappen till projektet (alltså utanför projektet):
Låt oss säga att projektet är i: '\parentFolder\ProjectRoot' tsconfig är i sökvägen: '\parentFolder\ProjectRoot\tsconfig.json'
Eslint-felet jag får (överst i index.ts) är följande:
Parsning fel: Kan inte läsa filen 'parentFolder\tsconfig.json'
- Observera att eslint på något sätt letar efter tsconfig i fel mapp (föräldern till rotmappen)
Innehållet i \parentFolder\ProjectRoot är:
Stegen för att nå denna punkt har varit:
- npm init
- npm i -D typescript
- lägg till "tsc": "tsc"-skript i package.json
- npm run tsc -- --init
- npm i express
- npm i -D eslint @types/express @typescript-eslint/eslint-plugin @typescript-eslint/parser
- npm i -D ts-node-dev
.eslintrc:
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
],
"plugins": ["@typescript-eslint"],
"env": {
"browser": true,
"es6": true
},
"rules": {
"@typescript-eslint/semi": ["error"],
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-unused-vars": [
"error", { "argsIgnorePattern": "^_" }
],
"@typescript-eslint/no-explicit-any": 1,
"no-case-declarations": 0
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
}
}
tsconfig.json
{
"compilerOptions": {
"target": "ES6",
"outDir": "./build/",
"module": "commonjs",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"esModuleInterop": true
}
}
package.json (ser ut som att ändra index.js till index.ts i "main" inte gör något)
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev index.ts",
"lint": "eslint --ext .ts ."
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@types/express": "^4.17.9",
"@typescript-eslint/eslint-plugin": "^4.9.0",
"@typescript-eslint/parser": "^4.9.0",
"eslint": "^7.14.0",
"ts-node-dev": "^1.0.0",
"typescript": "^4.1.2"
},
"dependencies": {
"express": "^4.17.1"
}
}
index.ts (Jag får implicita fel här i req och res, jag antar att det beror på att tsconfig inte kan hittas).
const express = require('express');
const app = express();app.use(express.json());
const PORT = 3000;
app.get('/ping', (_req, res) => {
res.send('pong');
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
redigera:
Jag hade TypeScript installerat globalt (och även som ett utvecklingsberoende i dessa projekt). Eftersom jag trodde att detta kunde vara problemet avinstallerade jag den globala versionen av TypeScript.
När jag kontrollerar alla globala paket med npm list -g --depth 0 får jag följande:
Jag vet inte om det skulle vara relaterat till problemet.
Svar #1
Det som fungerade för mig var på .eslintrc i mappen du är i att lägga till:
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname // <-- this did the trick for me
}
Svar #2
Jag lägger detta svar här som en idiotsäkerhetsåtgärd. Detta kan också hända om du öppnar projektet i fel mapp. Jag fick detta fel när jag öppnade föräldramappen till projektet istället för själva projektmappen. Jag hade ett projekt i GitLab -> projectFolder och öppnade GitLab. Jag fick felet som sa att tsconfig.json inte kunde läsas.
Svar #3
Jag hade ett mycket liknande problem i mitt delprojekt, vad som löste mitt problem var att ändra parserOptions i mitt delprojekts .eslintrc.json:
{
"globals": {
"__dirname": true
},
"overrides": [{
"parserOptions": {
"project": "**/tsconfig.json",
"sourceType": "module"
},
}]
}
