0

我已经看到了一些与此类似的问题,但我认为这个问题有点不同。

我共享了来自依赖项的 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版本相同。

4

0 回答 0