node.js - Typescript/Eslint 在我开始的每个项目中抛出 "Cannot read file tsconfig.json"

标签 node.js typescript express eslint

在其他线程中,我读到当 eslint 和 tsconfig.json 不在同一个工作文件夹中时可能会出现问题,但我在项目的根文件夹中拥有所有文件。不知何故,在初始化项目后,抛出的错误似乎试图在 中找到 tsconfig.json父文件夹 项目(因此,在项目之外):
假设项目位于:'\parentFolder\ProjectRoot'
tsconfig 在路由中:'\parentFolder\ProjectRoot\tsconfig.json
我得到的 eslint 错误(在 index.ts 的顶部)如下:
解析错误:无法读取文件“”父文件夹 \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"
      }
    }
    
    tsconfig.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 检查所有全局包时,我得到以下信息:
    enter image description here
    我不知道这是否与问题有关。

    最佳答案

    对我有用的是在您要添加的文件夹的 .eslintrc 上:

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

    关于node.js - Typescript/Eslint 在我开始的每个项目中抛出 "Cannot read file tsconfig.json",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65137939/

    相关文章:

    html - GET 请求后访问对象属性时出错?

    javascript - MongoDB Mongoose 使用数组保存或更新

    javascript - Node.js + Express - 无法连接。 ERR_CONNECTION_REFUSED

    javascript - typescript 中具有动态返回的函数

    javascript - Angular2 在输入中显示两位小数

    javascript - cheerio 使用 href 和 span 解析 h2

    node.js - 意外的 token 导入nodejs, typescript

    javascript - 使用 Node js + Express 4 + Passport 显示登录的用户名

    node.js - Angular5 webpack ReferenceError : window is not defined

    javascript - node.js 中的低优先级作业