【问题标题】:Failed to load plugin @typescript-eslint: Cannot find module 'eslint-plugin-@typescript-eslint'无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'
【发布时间】:2019-06-28 03:00:52
【问题描述】:

我正在将我的项目从 tslint 重新配置为 eslint。我可以手动运行 eslint,但是 webpack 无法运行并显示以下错误消息:

Module build failed (from /path/node_modules/eslint-loader/index.js):
Error: Failed to load plugin @typescript-eslint: Cannot find module 'eslint-plugin-@typescript-eslint'

我已经排除了错误的 .eslintrc.js 和缺少依赖项,因为当我手动运行它时它可以工作 ./node_modules/eslint/bin/eslint.js ./ --ext .ts,.tsx --config ./。 eslintrc.js

我不确定这是否是 eslint-loader 的上游问题。

module.exports = {
  parser: "@typescript-eslint/parser",
  plugins: ["@typescript-eslint"],
  extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react/recommended", "plugin:jest/recommended", "prettier", "prettier/@typescript-eslint"],
  rules: {
    "react/prop-types": false
  },
  parserOptions: {
    ecmaVersion: 6,
    project: "./tsconfig.json",
    sourceType: "module"
  },
  settings: {
    react: {
      version: "detect"
    },
    linkComponents: [
      {"name": "Link", "linkAttribute": "href"}
    ]
  },
  env: {
    browser: true
  }
};

我的 package.json

{
    "dependencies": {
        "@emotion/core": "10.0.6",
        "facepaint": "1.2.1",
        "react": "16.7.0",
        "react-dom": "16.7.0",
        "react-redux": "6.0.0",
        "redux": "4.0.1",
        "tslib": "1.9.3"
    },
    "devDependencies": {
        "@types/node": "10.12.21",
        "@types/react": "16.8.1",
        "@types/react-dom": "16.0.11",
        "@types/react-redux": "7.0.1",
        "@typescript-eslint/eslint-plugin": "1.2.0",
        "eslint": "5.13.0",
        "eslint-config-prettier": "4.0.0",
        "eslint-plugin-jest": "22.2.2",
        "eslint-plugin-react": "7.12.4",
        "tsconfig-paths-webpack-plugin": "3.2.0",
        "typescript": "3.2.1"
    }
}

【问题讨论】:

  • 你试过npm i eslint吗?我通过更新 eslint 解决了同样的问题。
  • 是的,我的依赖是最新的。
  • 你解决了这个问题吗?
  • @krulik 不,我还没有设法解决这个问题。你有吗?
  • @ThilakRao 是的,看看下面的答案。

标签: typescript webpack eslint eslintrc eslint-loader


【解决方案1】:

我通过将 package.json 中的所有 ^ 替换为空,然后将 npm i 替换为空来修复此错误。

【讨论】:

  • 这是一个非常错误的提议。这可能会导致您的项目中断。
  • 为什么?它只是修复了所有包的版本,对于严肃的开发来说很常见,因为这样做更安全。
  • @BradyDowling 实际上并非如此。删除 ~ 或 ^ 是指定它应该使用哪个版本。没有您的明确指示,它永远不会更新 dep。 ~ 表示它只会更新 Build,但不会更新次要版本。 ^ 表示它将更新次要和构建,但不会更新主要。在这方面,您可以控制何时更新到较新版本。所以这在技术意义上并没有错。
  • @JeffTian 你错了,你对每个包都这样做了。您执行了一揽子操作来解决仅与一次包相关的问题,您可能不知道是哪一个导致了问题。一揽子删除 SemVer 可能会破坏您的项目,因为您可能具有依赖于包的功能的功能,而这些功能在指定的次要版本中不可用。您应该只删除您知道需要保持固定的软件包的 SemVer。
  • @c0dezer019,非常感谢您指出这一点。我只是提供了一种我用来以更紧急的方式解决问题的方法。当然,我同意你的观点,如果我们以后有时间,我们可以找出问题的确切原因。
【解决方案2】:

你需要升级你的 eslint 版本,在错误中你会看到一个错误的前缀 eslint-plugin-,因为 eslint/lib/config/plugins.js 中的一些 const 在以后的版本中被删除了。

【讨论】:

  • @fantapop 这是 5.14
  • 我使用eslint-loader。刚刚发现它使用的是旧版本的 eslint,除非您使用配置选项指定 eslint 的路径。我能够修复它,但遇到了其他问题。看起来 eslint-loader 不支持最新版本的 eslint。
  • @ThilakRao 您是否尝试相应地更新 eslint-loader?
  • @krulik 是的,我使用的是最新版本的eslint-loader (v2.1.2),但没有解决我的问题。
  • 我在 "eslint": "^6.1.0" 和 "eslint-loader": "^2.0.0" 上,还是一样的错误
猜你喜欢
  • 2019-07-30
  • 2021-11-29
  • 2023-03-14
  • 2023-01-17
  • 2020-04-26
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
相关资源
最近更新 更多