无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'

Posted

技术标签:

【中文标题】无法加载插件@typescript-eslint:找不到模块\'eslint-plugin-@typescript-eslint\'【英文标题】: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 是的,看看下面的答案。 【参考方案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" 上,还是一样的错误

以上是关于无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'的主要内容,如果未能解决你的问题,请参考以下文章

使用内联注释禁用 typescript-eslint 插件规则(no-explicit-any)

加载规则“@typescript-eslint/dot-notation”时出错

vue3+typescript实战记录二(typescript-eslint)

使用 typescript-eslint 在 VSCode 编辑器中未显示 Typescript 错误

typescript-eslint 未使用 tsconfig

Qt Creator 编译后无法加载插件