ESLint不在VS Code中工作?

时间:2017-07-14 02:09:09

标签: javascript visual-studio-code eslint

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

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

{
  "eslint.options": { "configFile": "C:/mypath" }
}

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

其他人可以使用与完全相同的ESLint配置文件完全相同的包来从VS Code获取ESLint反馈。

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

我错过了什么?

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

26 个答案:

答案 0 :(得分:29)

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

将其放入您的.vscode/settings.json

"eslint.workingDirectories": [
    "./backend", 
    "./frontend"
],

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

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

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

答案 1 :(得分:26)

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

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

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

答案 2 :(得分:26)

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

有点“奇怪”的用户体验(很难注意到) - 无论如何 - 从 V 2.1.10 开始 -
您必须在新安装/首次安装时更改“当前阻止”状态栏 enter image description here

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

<块引用>

当 ESLint 扩展尝试加载一个 第一次使用 ESLint 库,需要批准。 相反,ESLint 状态栏项目更改为 ESLint 状态图标 表示执行当前被阻塞。

点击 status-bar(右下角): enter image description here

打开这个弹出窗口:

enter image description here

批准 ==> Allows Everywhere

enter image description here

-或- 通过命令:

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

enter image description here

在“版本说明”下阅读更多信息:

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


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

打开终端Ctrl+`

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

enter image description here

例如,缺少 .eslintrc-.json 会引发此错误: enter image description here

Error: ENOENT: no such file or directory, realpath

接下来,检查插件是否启用: enter image description here

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

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

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

<块引用>

eslint.probe = 语言标识符数组 ESLint 扩展应该被激活并且应该尝试验证 文件。如果对探测语言的验证失败,则扩展说 沉默的。 默认为 [javascript, javascriptreact, typescript, typescriptreacthtmlvuemarkdown]。

答案 3 :(得分:5)

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

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

答案 4 :(得分:4)

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

"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],

答案 5 :(得分:2)

我在Windows上遇到了类似的问题,但是有时eslint有时无法工作(在vscode中)。后来我意识到一段时间后它可以正常工作。与以下问题有关:eslint server takes ~3-5 minutes until available

设置环境变量NO_UPDATE_NOTIFIER=1解决了该问题

答案 6 :(得分:2)

在我的情况下,设置eslint验证为: “ eslint.validate”:[“ javascript”,“ javascriptreact”,“ html”,“ typescriptreact”], 完成了工作。

答案 7 :(得分:2)

由于您能够通过命令行成功完成加载,因此该问题很可能是ESLint 插件的配置。

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

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

"eslint.validate": [
  { "language": "typescript", "autoFix": true }
 ]

这是一个简单的解决方法:

"eslint.validate": [
  { "language": "javascript", "autoFix": true },
  { "language": "typescript", "autoFix": true }
]

这太普遍了,以至于有人写了一篇关于ESLint not working in VS Code的简单博客文章。我只是添加,请先检查您的全局用户settings.json,然后再覆盖本地工作区配置。

答案 8 :(得分:2)

我将Use Prettier Formatter和ESLint VS Code扩展一起使用,以进行代码分析和格式化。

enter image description here

enter image description here

现在使用给定的命令安装一些软件包,如果需要更多软件包,这些软件包将在您的终端中以安装命令的形式显示为错误,请也安装它们。

sample_rate

现在在项目主目录中创建一个新文件名 .prettierrc ,使用该文件,您可以配置漂亮扩展的设置,我的设置如下:

npm i eslint prettier eslint@^5.16.0 eslint-config-prettier eslint-plugin-prettier eslint-config-airbnb eslint-plugin-node eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks@^2.5.0 --save-dev

关于ESlint,您可以根据自己的要求进行配置,我建议您访问Eslint网站,查看规则(https://eslint.org/docs/rules/

现在在项目主目录中创建文件名 .eslintrc.json ,使用该文件可以配置eslint,我的配置如下:

{
  "singleQuote": true
}

答案 9 :(得分:1)

我在eslint上遇到了类似的问题,说这是“ ..尚未验证任何文件”,但是在VS Code问题控制台中没有任何报告。但是,在将VS Code升级到最新版本(1.32.1)并重新启动后,eslint开始工作。

答案 10 :(得分:1)

如果您使用的是ESLint的全局安装,则还必须全局安装配置中使用的所有插件。就像本地安装一样明智。 如果您已在本地安装并在本地正确配置,但eslint不起作用,请尝试重新启动IDE。 这与VScode发生在我身上。

答案 11 :(得分:1)

如果您正在使用eslint作为package.json依赖项来开发项目,请确保您运行npm install。这为我解决了。

答案 12 :(得分:1)

对我来说,当显示某些提示时,我确实不小心禁用了ESLint。

按照以下步骤为我修复它

  1. Shift + Command + P并选择ESLint: Disabled ESLint
  2. 关闭vscode
  3. Shift + Command + P并选择ESLint: Show Output Channel

答案 13 :(得分:0)

安装 Eslint npm 包和/或 Dirk baeumer 的 VS Code 扩展后,根据您的编码约定创建 .eslintrc.js 配置文件。

然后,在 VSCode 设置中启用所有 ESLint 配置,如下所示:

  • 根据您的操作系统按快捷键 Ctrl + 或 Command + 或搜索“设置”
  • 在搜索栏中输入 @ext:dbaeumer.vscode-eslint
  • 勾选以下复选框
    • Eslint:调试
    • Eslint:启用
    • Eslint:格式启用
    • Eslint:Lint 任务启用

Linting 快乐?

答案 14 :(得分:0)

我遇到了同样的 eslint 无法工作的问题。在 .eslintrc.json 文件中添加这些扩展名时,对我来说效果很好:

"extends": [
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates",
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended"
      ],

答案 15 :(得分:0)

如果您使用的是 Yarn 版本 2,它可能是罪魁祸首。对我来说,一旦我运行 yarn set version classicyarn install,一切又开始工作了。

答案 16 :(得分:0)

Windows 用户在此。

尝试了一切,没有任何效果。最后把.vscode/extensions里的eslint文件夹去掉,重新安装fixed!

<块引用>

C:\Users.vscode\extensions

答案 17 :(得分:0)

您可以打开 problem 选项卡来检查是否存在 ESLint 权限请求。如果您看到它,请尝试单击灯泡并解决问题,它对我有用。

problem tab in vscode terminal window

祝你好运!

答案 18 :(得分:0)

就我而言,我在foo bin_op文件夹中有一个.eslintrc.json文件。将其移到根文件夹后,ESLint开始正常工作。

答案 19 :(得分:0)

转到您的settings.json文件,添加以下内容,然后修复eslint.nodepath。根据自己的喜好量身定制。

 // PERSONAL
  "editor.codeActionsOnSaveTimeout": 2000,
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  "editor.fontSize": 16,
  "editor.formatOnSave": true,
  "explorer.confirmDragAndDrop": true,
  "editor.tabSize": 2,
  "eslint.codeAction.showDocumentation": {
    "enable": true
  },
  "eslint.nodePath": "C:\\{path}",
  "eslint.workingDirectories": ["./backend", "./frontend"],

答案 20 :(得分:0)

重新启动VSCode对我有用。

答案 21 :(得分:0)

在我的情况下, ESLint 在我的工作空间中被禁用。我必须启用它

答案 22 :(得分:0)

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

答案 23 :(得分:0)

就我而言,它没有用,因为即使我配置了package.json和扩展名,我也只向项目添加了一个monorepo文件夹。仅在将整个项目(其中包含package.json文件)添加到VS Code时,我才能工作。

答案 24 :(得分:0)

我给出的答复是假设您已经在本地项目根目录中使用 .eslintrc .eslintignore 定义了规则。 安装VSCode Eslint Extension之后,需要在settings.json中为vscode进行一些配置

pinctrl_pm_select_idle_state
eslint.enable: true

将eslint local安装为项目依赖项是此工作的最后一个要素。考虑不要以全局方式安装eslint,这可能与您本地安装的软件包冲突。

答案 25 :(得分:-1)

我遇到了同样的问题。启用了 ESLint 扩展并且 .eslintrc 文件有一些规则,但 VS Code 没有为我的代码显示任何自动修复。

问题出在我的文件夹结构上,就像那样

-workspace-folder
  -client
    -node_modules
    -src
    -.eslintrc.json
    -package.json
    -...other files

将文件夹结构改成下例后,删除package-lock.json并重新安装所有deps后,VS code开始显示es lint错误。

-workspace-folder
   -node_modules
   -src
   -.eslintrc.json
   -package.json
   -...other files