为@typescript-eslint/parser 设置了解析错误“parserOptions.project”

Sir*_*haa 2 node.js phpstorm eslint prettier nestjs

我创建了一个新的NestJS 项目,它是一个非常流行的 NodeJS 框架。但是我的 IDE(PhpStorm 2020.2-Beta)上有这个错误(见标题)并且 ESLint 根本不起作用。

我使用过 NestJS CLI:

nest new nestjs-micro
Run Code Online (Sandbox Code Playgroud)

我似乎不是唯一遇到此问题的人,因此最好能找到此问题的原因并一劳永逸地解决它。

我已经有一个悬而未决的问题,但我还没有答案,这真的很成问题。

如果有人知道如何解决问题并保持与 PhpStorm 的 ESLint / Prettier 集成,谢谢。

再现

nest new nestjs-micro
Run Code Online (Sandbox Code Playgroud)
// tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  }
}

Run Code Online (Sandbox Code Playgroud)

附加信息 截图_20200716_233543

版本

Typescript: 3.7.4
Node: 14.3.0
ESLint: 7.1.0
@typescript-eslint/parser: 3.0.2
Yarn: 1.22.4
Run Code Online (Sandbox Code Playgroud)

Sir*_*haa 5

我想到了。

当 Typescript 没有要编译的文件时会发生错误。

例如,最简单的解决方案是创建一个tsconfig.build.json文件并在其中指定以下参数:

{
  "extends": "./tsconfig.json",
  "exclude": ["node_modules", "test", "dist", "dist/**/*spec.ts"],
  "include": ["src/**/*", ".eslintrc.js"]
}
Run Code Online (Sandbox Code Playgroud)

上面的例子适用于 NestJS,但也适用于其他项目。

最令人惊讶的是,它只是出现在 PHPStorm 上的一个错误,构建,它工作正常。


小智 5

FWIW 这个错误对我有用的是添加ignorePatterns: ['.eslintrc.js'],.eslintrc.js文件中。这一行告诉eslint忽略该.eslintrc.js文件(因为它不包含在tsconfig声明的项目中rootDir)。