扩展程序 'eslint' 被配置为格式化程序,但无法格式化 'JavaScript' 文件。

47
我在VS Code中使用ESLint时遇到了间歇性的问题。当我保存一个文件时,状态栏会显示这个消息而不是格式化文件:enter image description here 显然谷歌上没有人报告过这个消息。 我说它是间歇性的,因为之前它一直很好用,但是电脑(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文件。

编辑

这个问题 关于 TypeScript 给出了一些提示。当 ESLint 服务器正在重新启动或扩展程序宿主处于高压状态时,似乎会导致此错误。

在我的项目中,大多数文件都可以正常格式化,尽管有一个始终失败。那个文件名叫做eslint.js,是构建过程的一部分,运行着 eslint - 我并不完全了解配置。我怀疑保存此文件会以某种方式运行/重新加载 eslint,在此过程中,eslint-vscode也会尝试运行它并失败。


1
我遇到了同样的问题。为了解决它,我使用了命令面板,点击格式化,得到了相同的消息,但是VS Code给了我配置选项——我进行了配置,现在它可以正常工作了 ‍♂️ - cameck
11个回答

42

我曾经和这个问题斗争了一段时间,结果发现你需要前往 设置,在 用户 下进入 Extensions > ESLint,滚动到 格式:启用 并将 ESLint 作为格式化程序启用。

设置:

设置截图


11
对我而言已经是这种情况,但我仍然收到错误信息。 - Matthis Kohli
对我来说,禁用此设置然后重新启用有所帮助。 - kamil-now
@kamil-现在这并没有帮助到我 - undefined

28

这可能发生的原因有很多。 eslint输出日志将告诉您问题所在。

输入图像描述

在我的情况下,设置字段configFile被更改为overrideConfigFile


1
在我的情况下,我在我的 eslintrc.js 上设置了一个无效的规则。只需检查 Eslint 错误即可。谢谢 @chantey - Mahdi Hosseini
1
如果有帮助的话:对我来说,问题是由于“.estlintrc”中存在一个尾随逗号所致。 - Massale
1
我的 ESLint 输出日志没有显示任何错误,但是我仍然遇到这个问题 :(。 - thdoan
这只在某些情况下输出日志。而且,除非出现这种错误,否则这个选项卡通常不会输出任何内容。默认情况下,有用的日志是关闭的。 - undefined

5

我之前也遇到了同样的问题,解决方法只需要删除 .eslintignore 文件即可。该文件中只包含了以下一行内容:

.eslintrc.js

你也可以直接对该行进行注释。

希望这有所帮助 :)


4
在我的情况下,解决这个问题比其他答案更简单:我忘记为这个项目创建一个 .eslintrc.js 文件。所以运行 npx eslint --init 就可以解决问题了。从另一个项目中复制该文件也是可行的。
希望这可以帮助像我一样通过谷歌搜索到这个错误并找到这个问题的人。

2
我的建议是:

对我有用的方法包括:

rm -rf node_modules
npm cache clean --force
npm install

关闭 VScode,然后重新打开。


2

在我的情况下,这是因为安装的eslint版本太旧了。似乎一些旧版本无法格式化javascript


1

对我来说,似乎StandardJS试图lint我的node_modules文件夹中的所有内容。在我的package.json中添加一个standard.ignore属性后,重新加载VSCode,错误消失并且linting开始正常工作:

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

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


更新: 我之前安装了eslintstandard,可能是根本原因。我的原始安装命令是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

1
  1. 禁用ESLint扩展
  2. 重新加载窗口
  3. 启用ESLint扩展
  4. 执行npm i eslint -g,同时使用npm i eslint -D在项目中安装ESLint
  5. 确保VSCode的settings.json没有其他默认的JavaScript格式化程序
{
  "eslint.enable": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  "editor.formatOnType": true,
  "[javascript]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  }
}
  1. 重新加载窗口

这对我有用


0
对我来说,问题出在.eslintrc文件里面,我在一个JSON的一行末尾加了一个逗号,导致文件无法读取。可以查看eslint的日志,也许能告诉你具体问题所在。

-2
我编辑了我的用户设置.json文件。添加了这个。
"editor.codeActionsOnSave": {
    "source.fixAll.eslint":true 
},

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接