我用——template typescript创建了一个新的React Native项目
我删除了作为样板的一部分的模板目录。
然后我继续添加ESLint:
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["airbnb-typescript-prettier"]
};
然而,当我打开babel.config.js时,我得到这个错误
解析错误:"parserOptions. "已经为@typescript-eslint/parser设置了Project "。
该文件与您的项目配置不匹配:/Users/Dan/site/babel.config.js。
该文件必须包含在至少一个提供的项目中。eslint
这个错误来自VSCode扩展吗?
错误是否有一个相对路径,即使它在同一个文件夹(或子文件夹)中(如下面的错误消息所示)?
Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: ../../../../../home/<ommitted>/projects/floor-planner/app/src/App.vue.
The file must be included in at least one of the projects provided.
如果是,使用CLI时检查是否仍然存在。
你可以从你的项目根目录运行eslint ..
如果没有发现这些错误,则很可能是通过符号链接打开了项目。
截至2021年8月,Eslint扩展不支持Symlinks。
在项目目录中,运行pwd -P来获取绝对路径。
在我的例子中,这导致
~/projects/floor-planner/app: pwd -P
/media/projects/2021-Q3/floor-planner/app
通过此路径打开项目。
Eslint应该不再显示错误。
该错误意味着有一个文件可以编译,但不属于当前定义的项目结构。有几种解决方案:
如果你不关心文件是否编译(即。配置文件等)
将文件名添加到.eslintignore
or
将文件或文件模式添加到.eslintrc.js文件中
ignorePatterns: ["babel.config.js"]
// or
ignorePatterns: ["**/*.config.js"]
您希望编译该文件
将文件、文件夹或模式添加到tsconfig中。json文件
include": [
"src",
"other_src",
]
说明部分修改需要重启IDE才能生效
你可以为eslint配置创建一个单独的TypeScript配置文件(tsconfig.eslint.json)。该文件扩展了tsconfig配置和设置,包括必须检测的文件的key。
.eslint.js:
// ...
parserOptions: {
// ...
project: "./tsconfig.eslint.json",
// ...
},
// ...
tsconfig.eslint.json:
{
"extends": "./tsconfig.json",
"include": [
// ...
"babel.config.js"
]
}
或者如果你想忽略它,你可以把它放在。eslintignore。
eslintignore:
// ...
babel.config.js
我在添加'@typescript-eslint/prefer- nulish -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',
},
},
],
}