ESLint가 VS Code에서 작동하지 않습니까?


87

ESLint는 VS Code에서 나를 위해 작동하지 않습니다. 플러그인이 VS Code에 설치되어 있고 ESLint 자체가 내 package.json에 개발자 종속성으로 설치되어 있습니다.

VS Code 사용자 설정에서 다음 옵션을 수정했습니다.

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

명령 eslint --init을 사용하여 기본 .eslintrc.json패키지를 패키지의 기본 디렉토리에 추가했습니다 .

다른 사람들은 똑같은 ESLint 구성 파일과 똑같은 패키지를 사용하여 VS Code에서 ESLint 피드백을 얻을 수있었습니다.

기본적으로 .eslintrc.json파일 내부에있는 권장 규칙 집합에 모두 포함 된 여러 규칙을 직접 위반했을 때 어떤 종류의 피드백도받지 못했습니다 .

내가 무엇을 놓치고 있습니까?

편집 : 명령 줄을 통해 ESLint를 사용하여 테스트했으며 모든 것이 예상대로 작동했지만 오류가 있어야하는 위치에서 발견되었지만 이러한 동일한 오류는 VS 코드에 나타나지 않았습니다. 문제는 ESLint가 아닌 VS Code 측에있는 것 같습니다.


2
ESLint를 성공적으로 설치 했지만 예상 한대로 ESLint에서 피드백을받지 못했다면 ESLint 초기화를 잊었을 가능성이 있습니다 . 그렇게하려면 프로젝트의 루트에서이 명령을 실행하십시오./node_modules/.bin/eslint --init

답변:


25

ESLint가 피드백을 제공하지 않는 데에는 몇 가지 이유가 있습니다. ESLint는 먼저 프로젝트에서 구성 파일을 찾고 .eslintrc.json을 찾을 수 없으면 전역 구성을 찾습니다. 개인적으로 각 프로젝트에 ESLint 만 설치하고 각 프로젝트를 기반으로 구성을 만듭니다.

피드백을받지 못하는 두 번째 이유는 피드백을 받으려면 .eslintrc.json에서 linting 규칙을 정의해야하기 때문입니다. 규칙이 없거나 플러그인이 설치되어 있지 않으면이를 정의해야합니다.


1
로컬 .eslintrc.json이있는 경우 설정에서 configFile을 정의 할 필요가 없습니다.
EJ 메이슨

3
.eslintrc.json내 프로젝트의 기본 폴더에 로컬이 이미 배치되어 있으며 내 규칙은 테스트중인 ESLint에서 권장하는 규칙을 확장합니다. 또한 추가 테스트를 위해 몇 가지 규칙을 추가했지만 성공하지 못했습니다.
John Landon

38
명령 줄을 통해 직접 ESLint를 사용하면 모든 것이 제대로 작동하고 모든 오류를 찾습니다. 여기서 문제는 ESLint가 아닌 VS Code와 관련된 것 같습니다.
존 랜든

3
설정 "eslint.enable": true에서 eslint를 활성화하십시오. 전 세계적으로 설치된 eslint가 없는지 확인하십시오. configFile 경로를 제거하십시오. 이것이 내가 vscode를 설정하는 방법입니다. eslint를 전역 및 로컬에 설치하면 많은 문제가 발생합니다.
EJ Mason

3
저에게 문제는 VSCode에 ESLint 확장을 설치하지 않았다는 것입니다.
atulkhatri

65

ESLint가 터미널에서 실행되고 VSCode 내부가 아닌 경우 확장이 로컬 및 전역 node_modules폴더를 모두 감지 할 수 없기 때문일 수 있습니다.

확인하려면 VSCode에서 Ctrl+ Shift+ U를 눌러 Output알려진 eslint문제가 있는 JavaScript 파일 을 연 후 패널 을 엽니 다 . 이 표시되는 경우 Failed to load the ESLint library for the document {documentName}.js- 또는 경우 Problems오류 또는 참조하는 경고 탭 쇼 eslint, 다음 VSCode 경로를 탐지하려고하는 데 문제가 있습니다.

그렇다면 eslint.nodePathVSCode 설정 ( settings.json) 에서을 구성하여 수동으로 설정하십시오 . 전체 경로 (예 :)를 제공하십시오. "eslint.nodePath": "C:\\Program Files\\nodejs",환경 변수 사용은 현재 지원되지 않습니다.
이 옵션은 ESLint 확장 페이지에 설명되어 있습니다.


eslint 지금 vscode와 함께 전 세계적으로 작동 않았는지 알아내는 몇 시간을 보냈다, 감사합니다
안드레이 Voicu을

최고의 대답.
Nikola Mihajlović

52

필자의 경우 React와 함께 TypeScript를 사용하고 있었기 때문에 수정은 단순히 ESLint에게 이러한 파일의 유효성을 검사하도록 지시하는 것입니다. 이것은 사용자 설정으로 이동해야합니다.

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

3
나를 위해 일했습니다. (Windows)
Ellis

1
React와 함께 TypeScript는 저에게도 효과적이었습니다. 감사합니다
ggat

Windows에서 React를 사용하는 TypeScript와 이것은 저에게도 효과적이었습니다.
Peter Boomsma

27

작업 디렉토리를 구성 .eslintrc하면 동일한 창에 자체 파일이 열린 여러 프로젝트가 있었기 때문에 문제가 해결되었습니다 .

이것을 당신의 .vscode/settings.json

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

github의이 사람에게 감사합니다 : https://github.com/microsoft/vscode-eslint/issues/696#issuecomment-542592372

추신 : .eslintrc/ node_modules를 제외한 모든 하위 디렉토리를 나열하는 유용한 명령 :

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


7

제 경우에는 VSCode에 ESLint 확장을 설치하지 않아 문제가 발생했습니다. 해냈고 다시 작동하기 시작했습니다.



3

ESLint의 전역 설치를 사용하는 경우 구성에 사용 된 모든 플러그인도 전역으로 설치해야합니다. 로컬 설치도 마찬가지입니다. 로컬로 설치하고 로컬로 올바르게 구성했지만 eslin이 작동하지 않는 경우 IDE를 다시 시작하십시오. 이것은 VScode로 나에게 일어났습니다.


어! 왜 이런 일이 더 빨리 일어나지 않았는지 모르겠습니다. VSCode는 내 Webpack 구성 파일에 정의 된 모듈 별칭을 인식하지 못하고 Eslint 오류를 표시했지만 명령 줄에서 Eslint를 실행하면 인식하지 못했습니다. VScode를 다시 시작하면 문제가 해결되었습니다!
Jared Knipp


3

.eslintrc.eslintignore를 사용 하여 로컬 프로젝트 루트에 이미 규칙을 정의했다고 가정하고 응답 합니다. VSCode Eslint Extension을 설치 한 후 vscode에 대한 settings.json에서 수행해야하는 여러 구성

eslint.enable: true
eslint.nodePath: <directory where your extensions available>

프로젝트 종속성으로 eslint local을 설치하는 것이 이것이 작동하는 마지막 요소입니다. eslint를 전역으로 설치하지 마십시오. 로컬에 설치된 패키지와 충돌 할 수 있습니다.


3

eslint와 비슷한 문제가 '.. 아직 파일 유효성을 검사하지 않음'이라고 말했지만 VS 코드 문제 콘솔에는 아무것도보고되지 않았습니다. 그러나 VS Code를 최신 버전 (1.32.1)으로 업그레이드하고 다시 시작한 후 eslint가 작동하기 시작했습니다.


3

제 경우에는 ESLint 가 제 작업 공간에서 비활성화되었습니다. vscode 확장 설정에서 활성화해야했습니다.


3

명령 줄을 통해 성공적으로 Lint를 수행 할 수 있으므로 ESLint 플러그인 구성에서 문제가 발생할 가능성이 높습니다. .

확장이 제대로 설치되었다고 가정하고 모든 ESLint 관련 구성 속성을 확인하십시오. 프로젝트 (작업 공간) 및 사용자 (글로벌) 정의 settings.json 모두에서 을 확인합니다.

특정 경우에 잘못 구성 될 수있는 몇 가지 사항이 있습니다. 나를 위해 다른 프로젝트에서 TypeScript로 작업 한 후 JavaScript가 비활성화되었으며 내 전역 settings.json이 다음과 같이 보입니다.

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

여기에서 간단한 수정이있었습니다.

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

이것은 너무 일반적이어서 누군가 가 VS Code에서 작동하지 않는 ESLint 에 대한 간단한 블로그 게시물을 작성했습니다 . 추가하고 로컬 작업 영역 구성을 재정의하기 전에 전역 사용자 settings.json을 확인하십시오.


나를 위해, 당신이 지정한 것 외에도 추가해야 "javascriptreact"했고 "typescriptreact"내 프로젝트는 React를 사용하기 때문에.
oyalhi

좋은 지적입니다. javascript하고 javascriptreact있습니다 기본값 하지만 난 당신이해야 할 것이라고 생각 *scriptreactJSX 파일을 다시 추가.
dmudro

2

내 경우에는 eslint validate를 "eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact"]로 설정했습니다.


2

코드 linting 및 형식화를 위해 Use Prettier Formatter 및 ESLint VS Code 확장을 함께 사용합니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

이제 주어진 명령을 사용하여 일부 패키지를 설치하십시오. 더 많은 패키지가 필요한 경우 터미널에 설치 명령과 함께 오류로 표시됩니다. 또한 설치하십시오.

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

이제 프로젝트 홈 디렉토리에 새 파일 이름 .prettierrc 를 만듭니다. 이 파일을 사용하여 더 예쁜 확장의 설정을 구성 할 수 있습니다. 내 설정은 다음과 같습니다.

{
  "singleQuote": true
}

이제 ESlint의 경우 요구 사항에 따라 구성 할 수 있습니다. Eslint 웹 사이트로 이동하여 규칙을 참조하십시오 ( https://eslint.org/docs/rules/ )

이제 프로젝트 홈 디렉토리에 .eslintrc.json 이라는 파일 이름을 만듭니다. 해당 파일을 사용하여 eslint를 구성 할 수 있습니다. 내 구성은 다음과 같습니다.

{
  "extends": ["airbnb", "prettier", "plugin:node/recommended"],
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error",
    "spaced-comment": "off",
    "no-console": "warn",
    "consistent-return": "off",
    "func-names": "off",
    "object-shorthand": "off",
    "no-process-exit": "off",
    "no-param-reassign": "off",
    "no-return-await": "off",
    "no-underscore-dangle": "off",
    "class-methods-use-this": "off",
    "prefer-destructuring": ["error", { "object": true, "array": false }],
    "no-unused-vars": ["error", { "argsIgnorePattern": "req|res|next|val" }]
  }
}

1

제 경우에는 package.json및 확장을 구성 했음에도 불구하고 monorepo의 폴더를 하나만 프로젝트에 추가했기 때문에 작동하지 않았습니다 . 전체 프로젝트 ( package.json파일 포함)를 VS 코드에 추가 할 때만 작업했습니다 .


1

eslint를 package.json 종속성으로 사용하여 프로젝트를 개발하는 경우 npm install. 그것은 나를 위해 그것을 고쳤습니다.


1

나를 위해 일부 프롬프트가 표시되었을 때 실수로 ESLint를 비활성화했습니다.

아래 단계를 수행하면 문제가 해결되었습니다.

  1. Shift + Command + P 그리고 선택 ESLint: Disabled ESLint
  2. vscode 닫기
  3. Shift + Command + P 그리고 선택 ESLint: Show Output Channel

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"],
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.