我已经看到了一些与此类似的问题,但我认为这个问题有点不同。
我共享了来自依赖项的 ESLint 配置,我们称之为my-shared-config
. 该依赖项包含一些插件,包括@babel
:
{
env: { ... },
plugins: [
'@babel',
'import',
'inclusive-language',
'react',
'react-hooks',
],
rules: { ... },
}
包含这些package.json
依赖项,其中包括:
"dependencies": {
"@babel/core": "7.17.0",
"@babel/eslint-parser": "7.17.0",
"@babel/eslint-plugin": "7.16.5",
"@babel/preset-react": "7.16.7",
"eslint": "8.8.0",
"eslint-plugin-import": "2.25.4",
"eslint-plugin-inclusive-language": "2.2.0",
"eslint-plugin-react": "7.28.0",
"eslint-plugin-react-hooks": "4.3.0"
},
对于大多数项目,共享配置有效。但是,在一个项目中,当我运行 linter 时,出现以下错误:
Error: Failed to load plugin '@babel' declared in '--config » my-shared-config': Cannot find module '@babel/eslint-plugin'
这个项目与其他项目的唯一区别——我能想到的——是它还安装了其他@babel/
依赖项。我的node_modules
结构如下所示:
node_modules
@babel # <-- BABEL
code-frame
compat-data
core
...more, but nothing for ESLint
@my-domain
my-shared-config
node_modules
@babel # <-- BABEL
compat-data
core
eslint-parser # <-- BABEL ESLINT
eslint-plugin # <-- BABEL ESLINT
...more
当我安装@babel/eslint-parser
并@babel/eslint-plugin
进入我的项目时,linter 工作正常。虽然没关系,但这显然不是我想要的解决方案,我不希望其他my-shared-config
曾经不得不这样做的团队。有谁知道这个问题的任何其他解决方案?我试过删除并重新安装我的node_modules
.
我认为这可能是 Yarn 而不是 Babel 依赖项的问题。
更新
仅当@babel/core
版本不完全相同时才会出现此问题。在将@babel/core
版本撞到 之后my-shared-config
,linter 在其他项目中抛出相同的错误,直到它自己的@babel/core
版本相同。