为啥@typescript-eslint/parser 包含在我的 tsconfig.json 中配置的文件之外的文件?
Posted
技术标签:
【中文标题】为啥@typescript-eslint/parser 包含在我的 tsconfig.json 中配置的文件之外的文件?【英文标题】:Why is @typescript-eslint/parser including files outside of those configured in my tsconfig.json?为什么@typescript-eslint/parser 包含在我的 tsconfig.json 中配置的文件之外的文件? 【发布时间】:2020-09-09 09:13:58 【问题描述】:我收到错误:-
Parsing error: "parserOptions.project" has been set for u/typescript-eslint/parser.
The file does not match your project config: .eslintrc.js.
The file must be included in at least one of the projects provided.
IDE - WebStorm 20.1.1
项目结构:-
node_modules
src
--- testfile.js
.eslintrc.js
.prettierrc.js
baseeslint.js
package.json
tsconfig.json
.eslintrc.js: -
module.exports =
extends: ['./baseeslint'],
parserOptions:
project: './tsconfig.json'
,
rules:
baseeslint.js:-
module.exports =
parser: '@typescript-eslint/parser'
tsconfig.json: -
"include": [
"/src/**/*.ts",
"/src/**/*.tsx"
],
"exclude": ["node_modules"],
"compilerOptions":
"outDir": "./lib",
"types": ["styled-components", "react", "@types/react-router-dom", "reactstrap"]
我完全不知道为什么会这样?我会假设它会忽略根目录中的文件,尤其是在我的 tsconfg.json 中指定的包含?
任何帮助将不胜感激。
编辑:-
我的解决方案,对别人有帮助吗...
我将 ignorePatterns 配置添加到我的 .eslintrc.js 文件中:-
module.exports =
extends: ["mycustom/eslint-config"],
parserOptions:
project: './tsconfig.json'
,
ignorePatterns: ["/*.*"],
rules:
这也可以通过 .eslintignore 来完成(请参阅下面的 Anton Bessonov 的回复)。
与此相关的另一件事可能对其他人有用的是我使用的 VScode 配置(我在发布原始问题后从 WebStorm 切换到 VSCode)。我非常喜欢在保存时运行 eslint fix,但我不希望它尝试对所有文件执行此操作。我的项目文件(并且只有我的项目文件)都是 .ts/.tsx。 settings.json 中的以下选项允许修复保存而不包括我的 repo 中的每个文件:-
"editor.codeActionsOnSave":
"source.fixAll.eslint": true
,
"eslint.probe": [
"typescript",
"typescriptreact"
],
如果没有指定eslint.probe,则默认为:-
["javascript", "javascriptreact", "typescript", "typescriptreact", "html", "vue"]
有关 VSCode ESLint 扩展设置的更多信息,请参阅here。
【问题讨论】:
这能回答你的问题吗? How to fix eslintrc The file does not match your project config? 【参考方案1】:为什么会这样?
我不完全确定,但似乎@typescript-eslint/parser
试图将 eslint 配置中涵盖的文件(例如通过扩展名)与tsconfig.json
中包含的文件进行比较。由于.js
文件被@typescript-eslint/parser 覆盖,并且根据您的eslint 配置,该文件可能包含在eslint 运行中。但是由于该文件未包含在 tsconfig 中,因此您会收到此错误。
如何解决?
根据您的情况,您可以选择其中之一:
-
您可以在
.eslintignore
中忽略它。这就是@U4EA 所做的。
如果可以将其添加到 tsconfig.json
中的包含中:
"include": [
".eslintrc.js",
// another includes
]
-
如果您没有“正确”的 tsconfig.json,因为您使用的是 monorepo,那么您可以创建一个新文件
tsconfig.eslint.json
:
"include": [
".eslintrc.js"
]
并将此文件仅用于 eslint:
parserOptions:
project: [
'./tsconfig.eslint.json',
'./packages/*/tsconfig.json',
],
,
【讨论】:
谢谢,这真的很简单而且很有帮助。【参考方案2】:您也可以忽略 .eslintrc.js 本身中的 .eslintrc.js,为您节省一个额外的文件:
"ignorePatterns": [
".eslintrc.js"
],
【讨论】:
【参考方案3】:对 VS Code 用户很有帮助,卸载或禁用 ESLint 扩展可能会解决这个问题,它对我有用 :)
【讨论】:
【参考方案4】:添加.eslintignore
解决
/*.*
编辑:
我的最终解决方案是将ignorePatterns
配置添加到我的 .eslintrc.js 文件中:-
module.exports =
extends: ["mycustom/eslint-config"],
parserOptions:
project: './tsconfig.json'
,
ignorePatterns: ["/*.*"],
rules:
这样做的原因是为了摆脱 .eslintignore 文件(减少工作空间的混乱)。
【讨论】:
【参考方案5】:Extension
我遇到了类似的问题,我在 vs 代码上禁用了 eslint 扩展,这就是我的问题。我假设全局 eslint 和我的项目之间存在某种冲突。
【讨论】:
【参考方案6】:只是为了建立 the accepted answer,我发现对我有帮助的是,默认情况下隐藏文件 aren't captured by globs。
要解决这个问题,你可以做一些组合(取决于你的shell environment supports):
"include": [
"./**/*", // All non-hidden files at any directory level
"./**/.*", // Hidden dotfiles like .eslintrc.js at any level
"./**/.*.[tj]s?(x)" // All hidden TS/JS dotfiles
]
【讨论】:
以上是关于为啥@typescript-eslint/parser 包含在我的 tsconfig.json 中配置的文件之外的文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?