【问题标题】:Extension 'eslint' is configured as formatter but it cannot format 'JavaScript'-files扩展“eslint”被配置为格式化程序,但它不能格式化“JavaScript”文件
【发布时间】:2021-12-13 07:30:51
【问题描述】:

我在 VS Code 中遇到了 ESLint 的间歇性问题。保存文件而不是格式化文件时,状态栏中会显示此消息:

显然没有人在 Google 上报告过这条消息。

当我说它是间歇性的时,它工作正常,然后计算机 (MBP) 崩溃了,重新启动时就是这种情况。它以前发生过,但我不记得我做了什么来解决它。

该应用程序是一个相当复杂的基于 Vue 的应用程序,基于预先配置的模板。在 package.json 中:

    "@vue/cli-plugin-eslint": "^4.5.13",

    "babel-eslint": "^10.1.0",
    "eslint": "^7.31.0",
    "eslint-plugin-import": "^2.23.4",
    "eslint-plugin-vue": "^7.14.0",

在 VS Code 工作区文件中:

        "editor.codeLens": true,
        "eslint.format.enable": true,
        "editor.codeActionsOnSave": {
          "source.fixAll.eslint": true,
        },
        "[javascript]": {
            "editor.defaultFormatter": "dbaeumer.vscode-eslint"
        },
        "[vue]": {
            "editor.defaultFormatter": "dbaeumer.vscode-eslint"
        },
        "eslint.validate": [
            "javascript"
        ],
        "debug.javascript.usePreview": true,
        "debug.javascript.usePreviewAutoAttach": true,
        "[jsonc]": {
            "editor.defaultFormatter": "dbaeumer.vscode-eslint"
        },

我真的不知道如何继续理解为什么 vscode-eslint 报告它无法格式化 JavaScript 文件。

编辑

This issue 关于 TypeScript 给出了一些提示。当 ESLint 服务器重新启动或扩展主机承受很大压力时,似乎会导致此错误。

现在在我的项目中,大多数文件的格式都很好,尽管一个文件一直失败。该文件名为eslint.js,是构建过程的一部分,运行 eslint - 我并不完全了解配置。我怀疑保存这个文件会以某种方式导致 eslint 运行/重新加载,而当这种情况发生时,eslint-vscode 也会尝试运行它并失败。

【问题讨论】:

  • 我遇到了同样的问题。为了解决这个问题,我使用了命令面板,点击格式化,得到了同样的信息,但是 VS Code 给了我配置的选项——我做了并且现在可以工作了????‍♂️

标签: javascript visual-studio-code eslint code-formatting vscode-eslint


【解决方案1】:

我实际上遇到了同样的问题,我只需要删除仅包含这一行的.eslintignore 文件:

.eslintrc.js

您也可以简单地评论该行。

希望有帮助:)

【讨论】:

    【解决方案2】:

    对我来说,StandardJS 似乎在尝试对我的 node_modules 文件夹中的所有内容进行 lint。将standard.ignore 属性添加到我的package.json 后,错误消失了,linting 再次开始工作,然后重新加载 VSCode:

    {
      "name": "foo",
      "devDependencies": {
        "standard": "^16.0.4"
      },
      "dependencies": {
        // stuff...
      },
      "standard": {
        "ignore": [
          "**/node_modules/**"
        ]
      }
    }
    

    不知道为什么这种行为没有自动发生......


    更新: 我之前在standard 旁边安装了eslint,这可能是根本原因。我原来的安装命令是npm install standard eslint,它安装了最新版本的eslint,v8.x.x。但是,standard(在撰写本文时)依赖于eslint v7.x.x,从而导致冲突。

    修复:

    ~$ npm uninstall eslint # remove eslint from package.json
    ~$ rm -rf node_modules  # remove node_modules
    ~$ npm install          # get fresh installation
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 2021-03-06
      • 1970-01-01
      相关资源
      最近更新 更多