我使用--template typescript
我删除了template
目录,该目录是样板文件的一部分。
然后我继续添加ESLint:
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["airbnb-typescript-prettier"]
};
但是,当我打开babel.config.js
时,出现此错误
解析错误:已为@ typescript-eslint / parser设置了“ parserOptions.project”。 该文件与您的项目配置不匹配:/Users/Dan/site/babel.config.js。 该文件必须包含在至少一个提供的项目中。eslint
答案 0 :(得分:31)
您可以创建用于tsconfig.eslint.json
配置的单独的TypeScript配置文件(eslint
)。该文件扩展了tsconfig
的配置,并为必须删除的文件设置了include
键。
.eslint.js
:
// ...
parserOptions: {
// ...
project: "./tsconfig.eslint.json",
// ...
},
// ...
tsconfig.eslint.json
:
{
"extends": "./tsconfig.json",
"include": [
// ...
"babel.config.js"
]
}
或者,如果您想忽略它,可以将其放入.eslintignore
。
.eslintignore
:
// ...
babel.config.js
答案 1 :(得分:12)
按照建议的in this issue,您可以将createDefaultProgram: true
添加到解析器选项中作为临时解决方案,尽管这样做的代价是可能会使您的IDE变得更慢。
{
...
parserOptions: {
project: './tsconfig.json',
createDefaultProgram: true,
},
}
答案 2 :(得分:10)
在“.eslintignore”中添加一行:
.eslintrc.js
答案 3 :(得分:5)
在我的ESLint配置中,我具有以下配置:
.eslintrc.js
module.exports = {
root: true,
env: {
node: true,
},
globals: {
Promise: "readonly"
},
parser: "@typescript-eslint/parser",
parserOptions: {
sourceType: "module",
tsconfigRootDir: __dirname,
project: ["./tsconfig.eslint.json"],
},
plugins: ["@typescript-eslint"],
extends: [
"eslint:recommended",
"prettier/@typescript-eslint",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
],
}
更新 该修复程序的关键部分是:
parser: "@typescript-eslint/parser"
这:
parserOptions: {
sourceType: "module",
tsconfigRootDir: __dirname,
project: ["./tsconfig.eslint.json"], // could be tsconfig.json too
}
答案 4 :(得分:5)
发生此问题的原因如下:
parserOptions.project
; parserOptions.project
,未指定createDefaultProgram
(it will be removed in a future version),并且正在删除项目中未包含的文件(例如babel.config.js
,{{1 }})从TypeScript ESLint Parser docs起:
parserOptions.project
此选项使您可以提供项目
metro.config.js
的路径。如果要使用需要类型信息的规则,则需要此设置。(...)
请注意,如果指定了此设置而未指定
tsconfig.json
,则必须仅对包含在项目中的文件进行清理,这些文件由提供的createDefaultProgram
文件定义。如果您现有的配置未包含您要删除的所有文件,则可以创建单独的tsconfig.json
。
要解决此问题,请将您的ESLint配置更新为以下内容:
tsconfig.eslint.json
答案 5 :(得分:2)
通过将 eslint
选项添加到您的 ignorePatterns
中,简单地指示 .eslintrc.js
忽略它们:
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json',
},
ignorePatterns: ["babel.config.js"],
...
由于对项目配置文件进行 linting 没有太大价值,因此您可以放心地忽略它们。
此外,我不会将它们作为您的 tsconfig.json
的一部分或创建特殊的 tsconfig.eslint.json
文件,仅用于 linting 目的。
答案 6 :(得分:1)
您需要将该文件添加到tsconfig include
阵列中。
有关更多详细信息,请参见typescript-eslint/typescript-eslint#967。
答案 7 :(得分:1)
我使用从项目文件夹指向主文件夹的符号链接:
/opt/project/workspace
=> ~/worspace
使用符号链接路径~/workspace
打开VSCode,错误始终存在。
使用原始路径/opt/project/workspace
打开VSCode可解决此问题。
这应该不是问题,但现在是。
答案 8 :(得分:1)
对我来说,问题源于使用 tsconfig
属性在 exlucde
中忽略的某些文件,但 eslint
没有忽略它们。
通常,如果希望 TSC 忽略文件,那么同样将应用于 eslint。所以只需将 exclude
配置中 .tsconfig
的值复制粘贴到 ignorePatterns
配置中的 .eslintrc
属性中。
答案 9 :(得分:0)
在我们的例子中,目录树中有多个.eslintrc和多个tsconfig.json。 (在.
上每个用于服务器,在./client
上每个用于React客户端。)
这在CLI上可以正常工作,但在VS Code的插件上不能正常工作。
解决方法是将./client/.eslintrc project
值设置为相对于 root 的值-而不是相对于.eslintrc文件。将其从“ ./tsconfig.json”更改为“ ./client/tsconfig.json”后,IDE衬棉将按预期工作。
答案 10 :(得分:0)
当我在文件夹结构中打开我的项目时,在VsCode中遇到了这个问题。奇怪的解决方案,但是有效。
在我的示例中,.ts中用于Express的Firestore功能项目,我不得不从其创建的functions文件夹中打开它。
我应该注意到这是这种问题,因为'npm run-script lint'从未返回错误。
答案 11 :(得分:0)
我在将 '@typescript-eslint/prefer-nullish-coalescing': 'error'
添加到 .eslintrc.js
时遇到了同样的问题。
经过多次反复试验,我想出了这个解决方案,在我的情况下效果很好:
module.exports = {
...
overrides: [
{
files: ['*.ts', '*.tsx'],
parserOptions: {
// this setting is required to use rules that require type information
project: './tsconfig.json',
},
rules: {
'@typescript-eslint/prefer-nullish-coalescing': 'error',
},
},
],
}
答案 12 :(得分:-1)
您需要包括对*.config.js
文件的打字稿支持:
tsconfig.json
:
{
"include": [
"**/*.config.js" // for *.config.js files
]
}
然后重新加载您的IDE!
答案 13 :(得分:-1)
您只需忽略 babel.config.js
文件中的 .eslintignore