const를 사용하는 경우 JSHint에서 경고를 발생시키는 이유는 무엇입니까?


316

const를 사용할 때 발생하는 오류입니다.

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />

내 코드는 다음과 같습니다

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

코드는 잘 작동합니다 .JSHint는 매번 경고합니다.


본문에 질문이 보이지 않지만 아마도 이미 대답 한 것 같습니다 "use esnext option". 그리고 왜? 오류 메시지가 명확하지 않습니까? const표준 JS가 아닙니다 (아직).
Teemu December

5
또는 jshint 대신 eslint를 사용하십시오
Rage

답변:


557

와 같은 ECMAScript 6 기능을 사용하는 const경우 JSHint가 불필요한 경고를 발생시키지 않도록이 옵션을 설정해야합니다.

/ * jshint esnext : true * / ( 편집 2015.12.29 : @Olga 의 의견 을 반영하도록 구문이 업데이트되었습니다 )

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

이 옵션은 이름에서 알 수 있듯이 코드에서 ECMAScript 6 특정 구문을 사용함을 JSHint에 알려줍니다. http://jshint.com/docs/options/#esversion

2017.06.11 편집 : 이 답변을 기반으로 다른 옵션 추가되었습니다 .

인라인 구성은 개별 파일에 적합하지만 .jshintrc프로젝트 루트에 파일 을 작성하고 파일을 추가 하여 전체 프로젝트에 대해이 설정을 사용할 수도 있습니다.

{
  "esversion": 6
}

1
이것은 작동합니다 ... 확실히 명령 줄 parm 일 것입니다! ... 힌트 힌트 jshint 민속
스콧 Stensland

9
Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.내 Webstorm 내장 플러그인이 새 옵션을 인식하지 못하지만 문서에 표시 됩니다. 나는 둘 다 지정했다.
Olga

5
.jshint가 아닌 .jshintrc의 경우 jshint 버전에 차이가 있는지 확실하지 않습니다.
teknopaul

죄송합니다. 맞습니다. 수정했습니다.
제임스 히 바드

1
그렇다면 Atom을 다시 시작하십시오
Vitor Braga

280

앱의 루트에 .jshintrc 라는 파일을 다음 내용으로 추가하여 전체 솔루션 에이 설정을 적용 할 수 있습니다 .

{
    "esversion": 6
}

James의 답변에 따르면 파일에 주석 /*jshint esversion: 6 */을 추가 할 수 있지만 많은 파일을 제어 해야하는 경우 필요한 것보다 더 많은 작업이 필요합니다.


1
이것을 사용하기위한 구성이 있습니까? 내 jshint는 내부의 내용을 무시합니다 .jshintrc.
Ethan Yang

1
@EthanYang, 아니요. 추가 구성이 없습니다. JSHint가 파일을 찾을 수 있는지 확인하십시오. 문서에서 :JSHint will start looking for this file in the same directory as the file that's being linted. If not found, it will move one level up the directory tree all the way up to the filesystem root. (Note that if the input comes from stdin, JSHint doesn't attempt to find a configuration file)
Zanon

59

내보내기 문을 사용할 때 이와 동일한 경고가 나타납니다. VS 코드를 사용하고 Wenlong Jiang의 솔루션에 비슷한 접근 방식을 사용했습니다.

  1. 사용자 설정
  2. JSHint 설정
  3. "jshint.options": {} (편집하다)
  4. 지정할 때 큰 따옴표를 사용하십시오"esversion"

    또는이 스 니펫을 사용자 설정에 복사하십시오.

    "jshint.options": {
      "esversion": 6,
    }

만들기 .jshintrc당신이 당신의 편집기에 대한 전역 jshint 설정을 구성 할 경우 파일은 필요하지 않습니다


8
감사합니다. Visual Studio 코드를 사용하는 사람들에게 가장 적합한 답변입니다. 참고로 (Mac :) "코드"> 환경 설정> 설정을 통한 사용자 설정.
CopyJosh

1
이 추가 솔루션에 감사드립니다. 매우 도움이됩니다.
dprogramz

41

VSCode를 사용하는 경우 :

1.

  • 이동 환경 설정 -> 설정 ( cmd + ,)
  • 입력 jshint.options검색 창에
  • 그 위에 마우스를 올려 놓고 연필 아이콘을 클릭하십시오.
  • 이제 오른쪽에 추가되었습니다.
  • "esversion": 6옵션 개체에 추가하십시오 .

2.

또는 단순히 이것을 사용자 설정에 추가하십시오.

"jshint.options": {
    "esversion": 6
}

[업데이트] 새로운 vscode 설정

  • 이동 환경 설정 -> 설정 ( cmd + ,)
  • jshint검색에 입력

VSCode 설정

  • 단계를 계속 2.

32

나는 이것을 고치려고 여러 해를 보냈다. 모든 솔루션은 '설정 옵션'에 대해 이야기합니다. 그게 무슨 뜻인지 모르겠습니다. 마침내, 나는 그것을 알아 냈습니다. 파일 맨 위에 주석 처리 된 행을 포함시킬 수 있습니다 /*jshint esversion: 6 */.

해결책


24
내가 알았 듯이이 방법을 사용하는 유일한 문제는 사용하는 모든 파일의 맨 위에 주석을 추가해야한다는 것입니다. 더 나은 솔루션은 이름이 지정된 앱의 루트 폴더에 새 파일을 .jshintrc만든 다음 파일에 다음 코드를 추가하는 것입니다. { "esnext": true }
Josh Pittman

17
{ "esnext": true }지금은 사용되지 않습니다 . 이제 { "esversion": 6 }대신 사용해야 합니다.
cybersam

3
구식 버전의 JSHint를 사용해야합니다.이 방법으로 만 사용할 "esnext": true수 있었기 때문 입니다. "esversion": 6효과가 없었습니다.
Joncom

4
그런 다음 JShint 😉 업그레이드
시릴 Duchon - 도리스

18

jshint 옵션 객체 내에 esversion : 6을 지정할 수 있습니다 . 이미지를 참조하십시오. grunt-contrib-jshint 플러그인을 사용하고 있습니다.

여기에 이미지 설명을 입력하십시오


2
이것은 Grunt를 사용하는 사람들에게 효과적입니다. gruntfile.js이 추가
JoeTidee

1
감사합니다, 저를위한 매력처럼 일했습니다. 독점 페이지에서 파일 (들) 및 개별적인 전환 기능의 구현을 무시할 필요가 없습니다
sg28

3

ECMAScript 6 사용을 시작하면 IDE에서이 오류가 발생합니다.

사용 가능한 두 가지 옵션이 있습니다.

파일이 하나만 있고 es6을 사용하려면 파일 맨 아래에 아래 행을 추가하면됩니다.

/*jshint esversion: 6 */

또는 많은 수의 js 파일이 있거나 nodejs express와 같은 프레임 워크를 사용하는 경우 .jshintrc루트 디렉토리에 이름이 지정된 새 파일을 만들고 파일에 아래 코드를 추가 할 수 있습니다 .

{
    "esversion": 6
}

각 프로젝트마다 es6 버전을 사용하려면 IDE를 구성 할 수 있습니다.


2

package.json에서 Jshint에게 다음과 같이 es6을 사용하도록 지시 할 수 있습니다

"jshintConfig":{
    "esversion": 6 
}

2020 년 4 월 Visual Studio Code
ArifMustafa에


1

Grunt 구성을 사용하는 경우 다음 단계를 수행해야합니다.

Jshint의 경고 메시지 :

여기에 이미지 설명을 입력하십시오

해결책:

  1. jshint 옵션을 설정하고 .jshintrc.js 파일을 맵핑하십시오.

여기에 이미지 설명을 입력하십시오

  1. 해당 파일에 .jshintrc.js 파일을 작성하고 다음 코드를 추가하십시오.
{  
  "esversion": 6  
} 

이를 구성한 후 다시 실행 경고를 건너 뜁니다.

여기에 이미지 설명을 입력하십시오


0

이 내용으로 jshint_opts라는 파일을 작성하십시오. { "esversion": 6}

그런 다음 다음 명령 줄과 같은 방법으로 jshint를 호출하십시오.

jshint --config jshint_opts lib / *. js


0

Mac의 SublimeText 3의 경우 :

  1. 루트 디렉토리 (또는 원하는 위치)에 .jshintrc 파일을 작성하고 esversion을 지정하십시오.
    # .jshintrc
    {
      "esversion": 6
    }
  1. SublimeLinter 사용자 설정에서 방금 작성한 파일의 pwd를 참조하십시오 (SublimeLite> 환경 설정> 패키지 설정> SublimeLinter> 설정).
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. SublimeText 종료하고 다시 시작

0

월 2020 여기에 내가 발견 간단한 솔루션 그리고 그것은 프로젝트 어딘가에 내부 C 인 경우 창에 내 모든 프로젝트에 대해 해결할 수 :이 .jshintrc 파일 및 쓰기 오픈 디렉토리, 새 파일 .jshintrc을 작성하고 C 디렉토리에 저장 { "esversion": 6}하고의를 그것. 경고는 사라져야하며 d 디렉토리에서도 동일하게 작동합니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오 예, 프로젝트 루트에 .jshintrc 파일을 생성하고 추가하여 특정 프로젝트에 대해서만이 설정을 활성화 할 수도 있습니다. { "esversion": 6}


0

만들기 .jshintrc에서 파일 루트 : 세트가 최신 JS 버전 디렉토리를 추가합니다 "esversion": 9및 ASI 버전 : "asi": true(이 세미콜론을 사용하지 않도록하는 데 도움이됩니다)

{
    "esversion": 9,
    "asi": true
}

0

Dreamweaver CC 2018에서이 문제를 해결하려면 환경 설정으로 이동하여 규칙 세트 편집-JS 선택, 변경 편집 / 적용, "esnext"찾기 및 false 설정을 true로 변경했습니다. 몇 시간의 연구 끝에 나에게 도움이되었습니다. 그것이 다른 사람들을 돕기를 바랍니다.


-1

Sublime Text 3을 사용하는 경우 :

  • 환경 설정 -> 설정으로 이동하십시오.
  • 아래 Preferences.sublime - 설정 - 사용자 추가 "esversion을": 6

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