Dlaczego JSHint generuje ostrzeżenie, jeśli używam const?

316

To jest błąd, który pojawia się podczas używania 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" />

Mój kod wygląda następująco:

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

Kod działa dobrze, tylko JSHint ostrzega mnie za każdym razem.

Andre Schlesinger
źródło
Nie widzę żadnej pytanie w tekście, ale prawdopodobnie już odpowiedział jej: "use esnext option". I dlaczego? Czy ten komunikat o błędzie nie jest dość jasny? constnie jest standardowym JS (jeszcze).
Teemu,
5
lub użyj eslint zamiast jshint
Rakka Rage

Odpowiedzi:

557

Korzystając z funkcji ECMAScript 6, takich jak const, powinieneś ustawić tę opcję, aby JSHint nie generował niepotrzebnych ostrzeżeń.

/ * jshint esnext: true * / ( Edytuj 2015.12.29 : zaktualizowano składnię, aby odzwierciedlała komentarze @ Olgi )

/*jshint esversion: 6 */

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

Ta opcja, jak sama nazwa wskazuje, informuje JSHint, że twój kod używa składni specyficznej dla ECMAScript 6. http://jshint.com/docs/options/#esversion

Edytuj 2017.06.11 : dodano kolejną opcję opartą na tej odpowiedzi .

Chociaż konfiguracja wbudowana działa dobrze dla pojedynczego pliku, możesz również włączyć to ustawienie dla całego projektu, tworząc .jshintrcplik w katalogu głównym projektu i dodając go tam.

{
  "esversion": 6
}
James Hibbard
źródło
1
to działa ... na pewno wolałby to jakiś parm z linii poleceń! ... wskazówka wskazówka jshint folk
Scott Stensland
9
Dokumentacja mówi teraz: Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Chociaż moja wtyczka Webstorm nie rozpoznaje nowej opcji. Skończyło się na określeniu obu.
Olga,
5
Dla mnie jego .jshintrc nie .jshint, nie jestem pewien, czy istnieją różnice w wersjach
jshint
Ups Masz rację. Poprawione
James Hibbard,
1
Następnie uruchom ponownie Atom, jeśli tak jest
Vitor Braga
280

Możesz dodać plik o nazwie .jshintrc w katalogu głównym aplikacji z następującą zawartością, aby zastosować to ustawienie do całego rozwiązania :

{
    "esversion": 6
}

Odpowiedź Jamesa sugeruje, że możesz dodać komentarz /*jshint esversion: 6 */do każdego pliku, ale jest to więcej pracy niż to konieczne, jeśli musisz kontrolować wiele plików.

Zanon
źródło
1
Czy istnieje konfiguracja do korzystania z tego? Mój jshint po prostu ignoruje to, co jest w środku .jshintrc.
Ethan Yang,
1
@EthanYang, Nie. Nie ma dodatkowej konfiguracji. Upewnij się tylko, że plik można znaleźć w JSHint. Z dokumentów: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

Otrzymałem to samo ostrzeżenie, gdy korzystam z wyciągu eksportowego. Używam VS Code i zastosowałem podobne podejście do rozwiązania Wenlong Jiang.

  1. Ustawienia użytkownika
  2. Konfiguracja JSHint
  3. "jshint.options": {} (Edytować)
  4. Przy określaniu użyj podwójnych cudzysłowów"esversion"

    Lub skopiuj ten fragment do Ustawień użytkownika:

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

Utworzenie .jshintrcpliku nie jest konieczne, jeśli chcesz skonfigurować globalne ustawienia jshint dla swojego edytora

Nicholas Gentile
źródło
8
Dziękuję Ci. Zdecydowanie najlepsza odpowiedź tutaj dla osób używających kodu visual studio. Dla odniesienia, Ustawienia użytkownika poprzez (Mac :) „Kod”> Preferencje> Ustawienia.
CopyJosh
1
Dziękujemy za to dodatkowe rozwiązanie. to bardzo pomocne.
dprogramz
41

Jeśli używasz VSCode:

1.

  • Przejdź do preferencji -> ustawienia ( cmd + ,)
  • Wpisz jshint.optionsw pasek wyszukiwania
  • Najedź na nią kursorem i kliknij ikonę ołówka
  • Teraz jest dołączony po prawej stronie.
  • Dodaj "esversion": 6do obiektu opcji.

2)

Lub po prostu dodaj to do ustawień użytkownika:

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

[AKTUALIZACJA] nowe ustawienia vscode

  • Przejdź do preferencji -> ustawienia ( cmd + ,)
  • wpisz jshintw wyszukiwaniu

Ustawienia VSCode

  • kontynuuj od kroku 2.
Phil
źródło
32

Spędziłem wieki próbując to naprawić. Każde rozwiązanie mówi o „ustawieniach opcji”. Nie wiem co to znaczy. W końcu to rozgryzłem. Możesz po prostu dodać komentarz na górze pliku /*jshint esversion: 6 */.

Rozwiązanie

Josh Pittman
źródło
24
Jedyny problem z robieniem tego w ten sposób, jak się dowiedziałem, polega na tym, że musisz dodać komentarz na początku każdego używanego pliku. Lepszym rozwiązaniem jest utworzenie nowego pliku w folderze głównym aplikacji o nazwie, .jshintrca następnie dodanie do pliku następującego kodu{ "esnext": true }
Josh Pittman,
17
{ "esnext": true }jest teraz przestarzała . Powinieneś teraz użyć { "esversion": 6 }zamiast tego.
cybersam
3
Muszę używać przestarzałej wersji JSHint, ponieważ tylko przy użyciu "esnext": truemogłem to rozwiązać. "esversion": 6nie miało wpływu.
Joncom
4
Następnie zaktualizuj swój JShint 😉
Cyril Duchon-Doris
18

Możesz określić esversion: 6 wewnątrz obiektu opcji jshint. Proszę zobaczyć obraz. Korzystam z wtyczki grunt-contrib-jshint.

wprowadź opis zdjęcia tutaj

Wenlong Jiang
źródło
2
Działa to dla osób używających Grunt. Dodaj to do gruntfile.js
JoeTidee
1
Dziękuję, działało dla mnie jak urok. Nie trzeba ignorować plików i indywidualnej implementacji esversioningu na wyłącznych stronach
sg28
3

Kiedy zaczynasz używać ECMAScript 6, ten błąd zgłaszany przez twoje IDE.

Dostępne są dwie opcje:

jeśli masz tylko jeden plik i chcesz korzystać z es6, po prostu dodaj poniżej wiersza u góry pliku.

/*jshint esversion: 6 */

Lub jeśli masz liczbę plików js lub używasz dowolnego frameworka (takiego jak nodejs express), możesz utworzyć nowy plik o nazwie .jshintrcw katalogu głównym i dodać kod poniżej w pliku:

{
    "esversion": 6
}

Jeśli chcesz używać wersji es6 dla każdego projektu, możesz skonfigurować IDE.

Prashant Barve
źródło
2

W pliku package.json możesz powiedzieć Jshint, aby używał es6 w ten sposób

"jshintConfig":{
    "esversion": 6 
}
Singhak
źródło
Odpowiedź zaakceptowana w kwietniu 2020 r. Dla programu Visual Studio Code
ArifMustafa
1

Jeśli używasz Webstorm i nie masz własnego pliku konfiguracyjnego, po prostu włącz EcmaScript.nextopcję Relaks w

Ustawienia | Języki i ramy | JavaScript | Narzędzia jakości kodu | JSHint

Zobacz to pytanie: Jak rozwiązać błędy JSHint-ES6?

Sudhanshu Gaur
źródło
1

Jeśli używasz konfiguracji Grunt, musisz wykonać następujące kroki

Komunikat ostrzegawczy w Jshint:

wprowadź opis zdjęcia tutaj

Rozwiązanie:

  1. Ustaw opcje jshint i zamapuj plik .jshintrc.js

wprowadź opis zdjęcia tutaj

  1. Utwórz plik .jshintrc.js w tym pliku i dodaj następujący kod
{  
  „esversion”: 6  
} 

Po skonfigurowaniu, uruchom ponownie. Pominie ostrzeżenie,

wprowadź opis zdjęcia tutaj

Sridhar
źródło
0

Utwórz plik o nazwie powiedz jshint_opts z tą zawartością: {"esversion": 6}

Następnie wywołaj jshint za pomocą czegoś takiego:

jshint --config jshint_opts lib / *. js

Alan Wendt
źródło
0

W przypadku SublimeText 3 na Macu:

  1. Utwórz plik .jshintrc w katalogu głównym (lub gdziekolwiek wolisz) i określ wersję:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Odwołaj się do pliku pwd, który właśnie utworzyłeś w ustawieniach użytkownika SublimeLinter (Sublime Text> Preferencje> Ustawienia pakietu> SublimeLinter> Ustawienia)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Zamknij i uruchom ponownie SublimeText
laptit
źródło
0

Maj 2020 Oto proste rozwiązanie, które znalazłem i rozwiąże dla wszystkich moich projektów, w systemie Windows, jeśli twój projekt znajduje się gdzieś w katalogu c:, utwórz nowy plik .jshintrc i zapisz go w katalogu C otwórz ten plik .jshintrc i napisz { "esversion": 6}i to to. ostrzeżenia powinny zniknąć, to samo będzie działać w katalogu d

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj tak, możesz również włączyć to ustawienie dla konkretnego projektu tylko przez utworzenie tego samego pliku .jshintrc w katalogu głównym projektu i dodanie { "esversion": 6}

kunal rajput
źródło
0

Utwórz .jshintrcplik w katalogu głównym i dodaj ustaw tam najnowszą wersję js: "esversion": 9i wersję asi: "asi": true(pomoże to uniknąć używania średników)

{
    "esversion": 9,
    "asi": true
}
JohnPix
źródło
0

Aby to naprawić w Dreamweaver CC 2018, poszedłem do preferencji, edytowałem zestaw reguł - wybierz JS, edytuj / zastosuj zmiany, znajdź „esnext” i zmieniłem ustawienie false na true. To zadziałało dla mnie po wielu godzinach badań. Mam nadzieję, że pomaga innym.

użytkownik13758676
źródło
-1

Jeśli używasz Sublime Text 3:

  • Przejdź do Preferencji -> Ustawienia
  • W obszarze Preferences.sublime-settings - dodaj „esversion” przez użytkownika: 6
Londyn 804
źródło
-2

W nowej wersji Dreamweaver, aby rozwiązać ten błąd

  • Przejdź do Edycja-> Preferencje-> Linting
  • I przejdź do js Edytuj zestaw reguł i przeszłość

    „jshintConfig”: {„esversion”: 6}

Muhammad Umar Arslan Muhammad
źródło