program tip

ESLint의 "no-undef"규칙은 Underscore 사용을 정의되지 않은 변수라고 부릅니다.

radiobox 2020. 11. 13. 08:02
반응형

ESLint의 "no-undef"규칙은 Underscore 사용을 정의되지 않은 변수라고 부릅니다.


Grunt를 빌드 도구로 사용하고 ESLint를 내가 작업중인 앱의 Linting 도구로 사용하고 있습니다. 또한 Underscore Node 패키지를 사용하고 있으며 내 앱에서 사용했습니다. 불행히도 내 코드에서 ESLint를 실행할 때 다음 줄에서 _가 정의되지 않은 변수라고 생각합니다.

return _.pluck(objects, nameColumn);

이것이 나에게주는 오류입니다.

78:21 error "_" is not defined no-undef

ESLint에 대한 no-undef 규칙을 비활성화하고 싶지 않고 Underscore 플러그인을 설치하려고 시도했지만 여전히이 오류가 발생합니다. 다른 사람이 이것으로 무엇을 시도 할 것인지에 대한 아이디어가 있다면 매우 감사 할 것입니다!

이 문제를 해결하는 데 도움이되는 추가 정보가 있으면 알려주세요!


공식 문서는 당신에게이 문제를 해결하는 방법에 대한 아이디어를 줄 것이다.

가장 쉬운 해결 방법은

/* global _ */

파일 상단에 있습니다.

그러나 새 js 파일마다이를 수행해야하므로 성 가실 수 있습니다. 밑줄을 자주 사용하는 경우 파일 에 전역을 추가.eslintrc 하는 것이 좋습니다 . 예를 들면 다음과 같습니다.

{
    "globals": {
        "_": false
    }
}

그리고 이것을 .eslintrc프로젝트 루트에 저장 하거나 선택적으로 사용자 홈 디렉토리에 저장하십시오. 일부는 후자가 권장되지 않는다고 말하지만 때로는 편리 할 수 ​​있지만 거기에 있음을 기억해야합니다 :)


위의 규칙에 대한 설명 : "_": false이름 _이 지정된 변수가이 변수가 전역 적으로 정의되어 있음을 eslint에 알리고이 변수에 대해 no-undef오류를 발생 시키지 않음을 의미 합니다. @sebastian이 지적했듯이 false변수를 덮어 쓸 수 없으므로 코드 _ = 'something else'에서 오류가 발생 no-global-assign합니다. 대신 사용하는 경우 "_": true(이것은 내 이전 답변이었습니다) 이는 값을 다시 할당 할 수 있으며 이전에 언급 한 오류가 발생하지 않음을 의미합니다.

그러나 이것은 내가 예제에서 보여준 것처럼 전역 변수에 직접 할당하는 경우에만 발생합니다. 당신은 여전히 ​​그것을 숨길 수 있으며 eslin은 아무 말도하지 않을 것입니다. 예를 들어, 이러한 스 니펫은 다음을 생성하지 않습니다 no-global-assign.

const _ = 'haha I broke your _' 

또는 함수 인수 이름으로, 예 :

function (_) {
  console.log(_, 'might not be the _ you were looking for') 
}

테스트를 위해 jest를 사용하는 경우-환경에서-eslintrc.json

"env":{
    "jest":true
}

참고 URL : https://stackoverflow.com/questions/34820817/eslints-no-undef-rule-is-calling-my-use-of-underscore-an-undefined-variable

반응형