解析错误:无法读取文件 '.../tsconfig.json'.eslint

dar*_*n z 88 node.js typescript eslint typescript-eslint

该错误Parsing error: Cannot read file '.../tsconfig.json'.eslint显示在.ts文件src夹中的所有文件中,包括index.ts.

我不知道如何设置配置。该问题仅显示一条红线并使文件变为红色。但是,一切都可以编译并运行良好。整个 Node 项目是使用 firebase CLI 创建的。

tsconfig.json 文件:

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017"
  },
  "compileOnSave": true,
  "include": [
    "src"
  ]
}
Run Code Online (Sandbox Code Playgroud)

.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",
      },
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

我曾尝试重新启动 VScode,清除缓存,但都无济于事。我猜我需要更改一些路径,但我不太擅长更改配置文件,所以我不想意外破坏整个项目。

che*_*som 172

默认情况下,projects (in parserOptions) 是相对于当前工作目录解析的。如果您eslint在与包含 的文件夹不同的工作目录中运行tsconfig.json,@typescript-eslint/parser 将无法找到该文件。

要解决此问题,您可以设置tsconfigRootDir__dirname,这将使解析器解析相对于 的项目配置.eslintrc.js

module.exports = {
  // ...
  parserOptions: {
    project: "tsconfig.json",
    tsconfigRootDir: __dirname,
    sourceType: "module",
  },
  // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您有 .eslintrc.yml 文件,有办法做到这一点吗? (6认同)
  • 它修复了所有文件警告,但 .eslint 仍然给出了一个新问题:解析错误:“parserOptions.project”已为 @typescript-eslint/parser 设置。该文件与您的项目配置不匹配:.eslintrc.js。该文件必须至少包含在所提供的项目之一中 (4认同)
  • 对于任何想知道的人来说, module.exports 代码位于子模块的“eslintrc.js”文件中。 (4认同)
  • 这在 .json 中如何工作? (3认同)
  • @dz1002 /sf/ask/4471533461/ (2认同)

Ian*_*ink 79

对于使用 Angular 和 的用户eslintrc.json,请将 2 颗星添加到项目节点,如下所示:

"overrides": [
  {
    "files": ["*.ts"],
    "parserOptions": {
      "project": ["**/tsconfig.json"]
    }
  }
]
Run Code Online (Sandbox Code Playgroud)


Dim*_*sov 37

对我有用的 VSCode 特定方法是.vscode在根项目目录中创建一个文件夹,并将以下属性添加到其中的settings.json文件中:

{
  "eslint.workingDirectories": [
    "src"
  ]
}
Run Code Online (Sandbox Code Playgroud)

"src"可以是任何目录,这应该是在eslint的范围。

  • 对于 Firebase Cloud Functions,请使用 `"eslint.workingDirectories": ["functions"]` (12认同)
  • 如果您的根文件夹中有以下目录:“backend”和“frontend”,则这将起作用:“eslint.workingDirectories”:[“backend”,“frontend”] (5认同)
  • 它对我的 firebase 功能有用!太感谢了! (2认同)

Cyb*_*iah 12

另一种方法是,如果您碰巧打开了项目上方的工作区文件夹(就像我的情况一样),只需使用实际项目文件夹启动一个新的工作区。这解决了我的 Eslint 错误。


小智 12

我通过添加@typescript-eslint/parser扩展解决了这个问题:

在此输入图像描述

  • 老哥截图了 (5认同)
  • 请将您的代码直接发布到帖子中,无需添加将来可能无效的额外网址。 (2认同)

dhe*_*499 9

通过以下行更新您的 eslintrc.json 文件:

"project": "PROJECT_NAME/tsconfig.json"

  • 这是一个简单明了的解决方案! (4认同)

小智 8

我突然开始使用 vscode 看到这个错误。重新启动 vscode 解决了我的问题