ESLint不在VS Code中工作?

Joh*_*don 44 javascript eslint visual-studio-code

ESLint在VS Code中不适用于我.我在VS Code中安装了插件,并且我的package.json中的ESLint本身也是开发人员依赖项,我也安装了它.

我在VS代码用户设置中修改了以下选项:

{
  "eslint.options": { "configFile": "C:/mypath" }
}
Run Code Online (Sandbox Code Playgroud)

我已经使用该命令eslint --init将基本添加.eslintrc.json到我的包的主目录中.

其他人能够使用与完全相同的ESLint配置文件完全相同的包来从VS Code获得ESLint反馈.

在直接破坏默认情况下在.eslintrc.json文件中默认包含的推荐规则集中的多个规则时,我没有收到任何反馈.

我错过了什么?

编辑:我已经通过命令行使用ESLint进行了测试,一切都按预期工作,发现错误应该在哪里,但是,这些相同的错误从未出现在VS Code中.问题似乎是在VS Code方面,而不是ESLint.

Kar*_*ler 36

配置工作目录为我解决了这个问题,因为我有多个项目,.eslintrc在同一个窗口中打开了自己的文件。

把这个放在你的 .vscode/settings.json

"eslint.workingDirectories": [
    "./backend", 
    "./frontend"
],
Run Code Online (Sandbox Code Playgroud)

感谢 github 上的这个人:https : //github.com/microsoft/vscode-eslint/issues/696#issuecomment-542592372

PS:列出所有包含.eslintrc除 /node_modules 之外的子目录的有用命令:

find . .eslintrc | grep .eslintrc | grep -v node_modules


Par*_*olt 34

如果ESLint在终端上运行但不在VSCode内运行,则扩展可能无法从本地和全局节点模块文件夹中检测ESLint库.

要验证,请在VSCode中按CTRL + SHIFT + U,在项目中打开JS文件后转到"输出"面板.如果显示"无法为文档加载ESLint库{{documentName}}.js",则在尝试检测路径时遇到问题.

如果是,则通过在设置中配置"eslint.nodePath"手动设置它.给它完整的路径; 目前不支持使用环境变量.此选项已在ESLint扩展页面中记录.


Ezr*_*ton 29

案例 1/2:首次安装插件?批准是必要的

有点“奇怪”的用户体验(很难注意到) - 无论如何 - 从 V 2.1.10 开始 -
您必须更改“当前阻止”状态栏 在此处输入图片说明 在新/首次安装上。

ESLint 插件版本更新2.1.10日志 ( 08/10/2020 )

当 ESLint 扩展首次尝试加载 ESLint 库并且需要批准时,不会显示模态对话框。相反,ESLint 状态栏项目更改为 ESLint 状态图标,表明执行当前处于阻塞状态。

单击status-bar(右下角): 在此处输入图片说明

打开此弹出窗口:

在此处输入图片说明

批准 ==> Allows Everywhere

在此处输入图片说明

- 或 - 通过命令:

ctrl+ Shift+ p --ESLint: Manage Library Execution

在此处输入图片说明

在“发行说明”下阅读更多信息:

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint


案例 2/2:插件已经安装/批准

打开终端Ctrl+`

输出 ESLint下拉列表下,您可以找到有用的调试数据(错误、警告、信息)。

在此处输入图片说明

例如,missing.eslintrc-.json抛出这个错误: 在此处输入图片说明

Error: ENOENT: no such file or directory, realpath

接下来,检查插件是否启用: 在此处输入图片说明

默认情况下不需要编辑 eslint.probe

最后,自 v 2.0.4 -eslint.validate在“正常情况”(react、vue、typescript、js、html、md)中不再需要旧的遗留设置)**

**许多过时的 stackoverflow 答案(甚至是她)都表明eslint.probe应该编辑该文件。

eslint.probe= 应为其激活 ESLint 扩展并尝试验证文件的语言标识符数组。如果对被探测语言的验证失败,则扩展会提示无声。默认为 [ javascript, javascriptreact, typescript, typescriptreact, html, vue, markdown]。

  • 我认为这一点需要固定 - 允许操作是如此不明显。这为我解决了一切。 (3认同)

Sim*_*one 26

就我而言,由于我将TypeScript与React一起使用,所以解决方法只是告诉ESLint也验证这些文件。这需要进入您的用户设置:

"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。(在 Windows 上) (3认同)
  • “用户设置”是什么意思?这是“.eslintrc.json”还是其他东西? (2认同)
  • 这是您的“settings.json”文件。您可以通过命令面板打开此文件,在 macOS 上使用“Cmd + Shift + P”打开它,然后搜索“首选项:打开设置(JSON)” (2认同)

EJ *_*son 13

ESLint可能没有给您反馈的原因有很多。ESLint将首先在您的项目中寻找您的配置文件,如果找不到.eslintrc.json,它将在其中寻找全局配置。就个人而言,我仅在每个项目中安装ESLint并根据每个项目创建配置。

无法获得反馈的第二个原因是,要获得反馈,您必须在.eslintrc.json中定义起毛规则。如果那里没有规则,或者您没有安装插件,则必须定义它们。

  • 直接通过命令行使用ESLint时,一切正常,并且发现所有错误。这里的问题似乎与VS Code有关,而不与ESLint有关。 (14认同)
  • 对我来说,问题是我没有在 VSCode 中安装 ESLint 扩展。 (6认同)
  • 我已经将本地`.eslintrc.json` 放在我的项目的主文件夹中,我的规则扩展了 ESLint 推荐的规则,这是我正在测试的规则。我还添加了一些我自己的规则来进一步测试,但没有成功。 (3认同)
  • 尝试在设置“ eslint.enable”中启用eslint:是。确保您没有在全局安装任何夹板。并尝试删除configFile路径。这就是我设置vscode的方式。在全球范围内和本地安装时,我遇到很多问题。 (3认同)

bat*_*top 10

我通过重新启动 ESLint 服务器解决了该问题。您可以通过打开Ctrl+P菜单来执行此操作。然后就可以进入了> ESLint: Restart ESLint Server


dmu*_*dro 7

由于您能够通过命令行成功 lint,问题很可能出在 ESLint插件的配置中。

假设扩展已正确安装,请检查项目(工作区)和用户(全局)定义的 settings.json 中所有与 ESLint 相关的配置属性

在您的特定情况下,有一些事情可能会被错误配置;对我来说,在另一个项目中使用 TypeScript 后禁用了 JavaScript,我的全局settings.json 最终看起来如下:

"eslint.validate": [
  { "language": "typescript", "autoFix": true }
 ]
Run Code Online (Sandbox Code Playgroud)

从这里开始,这是一个简单的修复:

"eslint.validate": [
  { "language": "javascript", "autoFix": true },
  { "language": "typescript", "autoFix": true }
]
Run Code Online (Sandbox Code Playgroud)

这太常见了,以至于有人写了一篇关于ESLint 在 VS Code 中不起作用的直截了当的博客文章。我只是添加,在覆盖本地工作区配置之前检查您的全局用户 settings.json。


小智 6

如果您使用 ESLint 的全局安装,则配置中使用的任何插件也必须全局安装。对于本地安装来说也是如此。如果您已在本地安装并在本地正确配置,但 eslint 无法正常工作,请尝试重新启动您的 IDE。我在使用 VScode 时就遇到过这种情况。


the*_*tto 6

重新启动 VSCode 对我有用。


小智 6

在我的例子中,将 eslint validate 设置为: "eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ] 就完成了这项工作。


atu*_*tri 5

就我而言,我没有在VSCode中安装他的ESLint扩展,这导致了问题。做到了,它又开始工作了。


Mel*_*hia 5

在我的情况下,ESLint在我的工作区中被禁用。我必须在 vscode 扩展设置中启用它。


jav*_*301 5

就我而言,我必须在 VSCode 中启用 ESLint“始终显示状态”设置:

在此输入图像描述

然后 VSCode 中立即开始显示 linting 结果。