NodeJS Typescript / Eslint在我启动的每个项目中都抛出“无法读取文件tsconfig.json”

6qftjkof  于 2023-04-05  发布在  Node.js
关注(0)|答案(3)|浏览(218)

在其他线程中,我读到当eslint和tsconfig.json不在同一个工作文件夹中时可能会出现问题,但我将所有文件都放在项目的根文件夹中。不知何故,在初始化项目后,抛出的错误似乎试图在项目的父文件夹中找到tsconfig.json(因此,在项目之外):
假设项目在:'\parentFolder\ProjectRoot' tsconfig在路由中:'\parentFolder\ProjectRoot\tsconfig.json
我得到的eslint错误(在index.ts的顶部)如下所示:

  • 解析错误:无法读取文件“parentFolder\tsconfig. json '*
  • 请注意,eslint不知何故在错误的文件夹(根文件夹的父文件夹)中查找tsconfig

\parentFolder\ProjectRoot的内容为:
达到这一点的步骤是:

  • npm初始化
  • npm i -D typescript
  • 添加“tsc”:“tsc”脚本到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"
  }
}

系统配置json

{
  "compilerOptions": {
    "target": "ES6",
    "outDir": "./build/",
    "module": "commonjs",
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "esModuleInterop": true
  }
}

package.json(看起来像是在“main”中将index.js改为index.ts没有任何作用)

{
  "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(我在req和res中得到了隐式错误,我想是因为找不到tsconfig这一事实造成的)。

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}`);
});

编辑:

我已经全局安装了typescript(也作为这些项目中的开发依赖项)。认为这可能是问题所在,我卸载了typescript的全局版本。
当使用npm list -g --depth 0检查所有全局包时,我得到以下结果:

我不知道这是否与这个问题有关。

sc4hvdpw

sc4hvdpw1#

对我有用的是你要添加的文件夹的.eslintrc:

parserOptions: {
   project: 'tsconfig.json',
   tsconfigRootDir: __dirname // <-- this did the trick for me
}
vof42yt1

vof42yt12#

我把这个答案放在这里是为了防止白痴的措施。如果你在错误的文件夹中打开项目,也会发生这种情况。当我打开项目的父目录而不是项目目录本身时,我得到了这个错误。我在GitLab -> projectFolder中有一个项目,然后打开GitLab。我得到了一个错误,说tsconfig.json无法读取。

qyswt5oh

qyswt5oh3#

在ts config的parserOptions中添加

tsconfigRootDir: __dirname,

相关问题