Warum gibt JSHint eine Warnung aus, wenn ich const verwende?

316

Dies ist der Fehler, den ich bei der Verwendung von const erhalte:

<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" />

Mein Code sieht folgendermaßen aus:

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

Der Code funktioniert einwandfrei, nur JSHint warnt mich jedes Mal.

Andre Schlesinger
quelle
Ich sehe keine Frage im Text, aber wahrscheinlich haben Sie sie bereits beantwortet : "use esnext option". Und warum? Ist diese Fehlermeldung nicht ziemlich klar? constist (noch) kein Standard-JS.
Teemu
5
oder benutze eslint anstelle von jshint
Rakka Rage

Antworten:

556

Wenn Sie sich auf ECMAScript 6-Funktionen wie verlassen const, sollten Sie diese Option festlegen, damit JSHint keine unnötigen Warnungen auslöst.

/ * jshint esnext: true * / ( Edit 2015.12.29 : Aktualisierte Syntax, um @ Olgas Kommentare widerzuspiegeln )

/*jshint esversion: 6 */

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

Diese Option teilt JSHint, wie der Name schon sagt, mit, dass Ihr Code die ECMAScript 6-spezifische Syntax verwendet. http://jshint.com/docs/options/#esversion

Edit 2017.06.11 : Basierend auf dieser Antwort wurde eine weitere Option hinzugefügt .

Während die Inline-Konfiguration für eine einzelne Datei gut funktioniert, können Sie diese Einstellung auch für das gesamte Projekt aktivieren, indem Sie eine .jshintrcDatei im Stammverzeichnis Ihres Projekts erstellen und dort hinzufügen.

{
  "esversion": 6
}
James Hibbard
quelle
1
das funktioniert ... sicher wäre es lieber ein Kommandozeilen-Parameter! ... Hinweis Hinweis Jshint Folk
Scott Stensland
9
In der Dokumentation heißt es jetzt, Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.obwohl mein in Webstorm integriertes Plugin keine neue Option erkennt. Am Ende habe ich beide angegeben.
Olga
5
Für mich ist es .jshintrc nicht .jshint, nicht sicher, ob es Unterschiede in jshint-Versionen gibt
teknopaul
Hoppla. Du hast Recht. Korrigiert.
James Hibbard
1
Starten Sie dann Ihr Atom neu, wenn dies der Fall ist
Vitor Braga
280

Sie können eine Datei hinzufügen namens .jshintrc in Ihrer App root mit folgendem Inhalt gelten diese Einstellung für die gesamte Lösung :

{
    "esversion": 6
}

James 'Antwort legt nahe, dass Sie /*jshint esversion: 6 */für jede Datei einen Kommentar hinzufügen können , aber es ist mehr Arbeit als nötig, wenn Sie viele Dateien steuern müssen.

Zanon
quelle
1
Gibt es eine Konfiguration dafür? Mein Jshint ignoriert einfach, was drin ist .jshintrc.
Ethan Yang
1
@EthanYang, Nein. Es gibt keine zusätzliche Konfiguration. Stellen Sie einfach sicher, dass die Datei von JSHint gefunden werden kann. Aus Dokumenten: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

Ich habe dieselbe Warnung erhalten, wenn ich eine Exportanweisung verwendet habe. Ich verwende VS Code und verwende einen ähnlichen Ansatz wie die Lösung von Wenlong Jiang.

  1. Benutzereinstellungen
  2. JSHint-Konfiguration
  3. "jshint.options": {} (Bearbeiten)
  4. Verwenden Sie bei der Angabe doppelte Anführungszeichen"esversion"

    Oder kopieren Sie dieses Snippet in die Benutzereinstellungen:

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

Das Erstellen einer .jshintrcDatei ist nicht erforderlich, wenn Sie die globalen jshint-Einstellungen für Ihren Editor konfigurieren möchten

Nicholas Gentile
quelle
8
Vielen Dank. Auf jeden Fall die beste Antwort für diejenigen, die Visual Studio Code verwenden. Für ref, Benutzereinstellungen über (Mac :) "Code"> Einstellungen> Einstellungen.
CopyJosh
1
Vielen Dank für diese zusätzliche Lösung. Es ist sehr hilfreich.
dprogramz
41

Wenn Sie VSCode verwenden:

1.

  • Zur Voreinstellungen -> Einstellungen ( cmd + ,)
  • Geben Sie jshint.optionsin die Suchleiste ein
  • Bewegen Sie den Mauszeiger darüber und klicken Sie auf das Stiftsymbol
  • Es ist jetzt auf der rechten Seite angehängt.
  • In "esversion": 6zu dem Optionen - Objekt.

2.

Oder fügen Sie dies einfach Ihren Benutzereinstellungen hinzu:

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

[UPDATE] neue vscode-Einstellungen

  • Zur Voreinstellungen -> Einstellungen ( cmd + ,)
  • Geben Sie jshintin search ein

VSCode-Einstellungen

  • Fahren Sie mit Schritt fort 2.
Phil
quelle
32

Ich habe ewig versucht, das zu beheben. In jeder Lösung geht es um "Einstellungsoptionen". Ich weiß nicht was das bedeutet. Schließlich habe ich es herausgefunden. Sie können einfach eine auskommentierte Zeile oben in die Datei einfügen /*jshint esversion: 6 */.

Lösung

Josh Pittman
quelle
24
Das einzige Problem dabei ist, wie ich herausgefunden habe, dass Sie den Kommentar oben in jede von Ihnen verwendete Datei einfügen müssen. Eine bessere Lösung besteht darin, eine neue Datei im Stammordner Ihrer App mit dem Namen zu erstellen .jshintrcund dann den folgenden Code zur Datei hinzuzufügen{ "esnext": true }
Josh Pittman
17
{ "esnext": true }ist jetzt veraltet . Sie sollten jetzt { "esversion": 6 }stattdessen verwenden.
Cybersam
3
Ich muss eine veraltete Version von JSHint verwenden, da "esnext": trueich dies nur durch die Verwendung lösen konnte. "esversion": 6hatte keine Wirkung.
Joncom
4
Dann aktualisieren Sie Ihre JShint Cyr
Cyril Duchon-Doris
18

Sie können esversion: 6 innerhalb des jshint options-Objekts angeben . Bitte sehen Sie das Bild. Ich benutze das Grunt-Contrib-Jshint-Plugin.

Geben Sie hier die Bildbeschreibung ein

Wenlong Jiang
quelle
2
Dies funktioniert für diejenigen, die ein Grunzen verwenden. Fügen Sie dies zu gruntfile.js
JoeTidee
1
Vielen Dank, hat wie ein Zauber für mich funktioniert. Keine Notwendigkeit, Datei (en) und individuelle Implementierung von Esversioning in exklusiven Seite (n) zu ignorieren
sg28
3

Wenn Sie ECMAScript 6 verwenden, wird dieser Fehler von Ihrer IDE ausgelöst.

Es stehen zwei Optionen zur Verfügung:

Wenn Sie nur eine Datei haben und es6 verwenden möchten, fügen Sie einfach die folgende Zeile oben in die Datei ein.

/*jshint esversion: 6 */

Oder wenn Sie eine Anzahl von js-Dateien haben oder ein Framework verwenden (wie nodejs express), können Sie eine neue Datei mit dem Namen .jshintrcin Ihrem Stammverzeichnis erstellen und den folgenden Code in die Datei einfügen:

{
    "esversion": 6
}

Wenn Sie die es6-Version für jedes Projekt verwenden möchten, können Sie Ihre IDE konfigurieren.

Prashant Barve
quelle
2

In Ihrer package.json können Sie Jshint anweisen, es6 wie folgt zu verwenden

"jshintConfig":{
    "esversion": 6 
}
Singhak
quelle
Antwort akzeptiert im April 2020 für Visual Studio Code
ArifMustafa
1

Wenn Sie Webstorm verwenden und keine eigene Konfigurationsdatei haben, aktivieren Sie einfach die Option Entspannen EcmaScript.nextin

Einstellungen | Sprachen & Frameworks | JavaScript | Tools für die Codequalität | JSHint

Siehe diese Frage Wie-löse ich-diese-JSHint-ES6-Fehler?

Sudhanshu Gaur
quelle
1

Wenn Sie die Grunt-Konfiguration verwenden, müssen Sie die folgenden Schritte ausführen

Warnmeldung in Jshint:

Geben Sie hier die Bildbeschreibung ein

Lösung:

  1. Legen Sie die jshint-Optionen fest und ordnen Sie die Datei .jshintrc.js zu

Geben Sie hier die Bildbeschreibung ein

  1. Erstellen Sie die Datei .jshintrc.js in dieser Datei, und fügen Sie den folgenden Code hinzu
{  
  "esversion": 6  
}} 

Nachdem Sie dies konfiguriert haben, führen Sie es erneut aus. Die Warnung wird übersprungen.

Geben Sie hier die Bildbeschreibung ein

Sridhar
quelle
0

Erstellen Sie eine Datei mit dem Namen jshint_opts mit folgendem Inhalt: {"esversion": 6}

Rufen Sie dann jshint mit so etwas wie dieser Befehlszeile auf:

jshint --config jshint_opts lib / *. js

Alan Wendt
quelle
0

Für SublimeText 3 auf Mac:

  1. Erstellen Sie eine .jshintrc-Datei in Ihrem Stammverzeichnis (oder wo immer Sie möchten) und geben Sie die Esversion an:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Verweisen Sie in den SublimeLinter-Benutzereinstellungen (Sublime Text> Einstellungen> Paketeinstellungen> SublimeLinter> Einstellungen) auf das pwd der Datei, die Sie gerade erstellt haben.
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Beenden Sie SublimeText und starten Sie es neu
Laptit
quelle
0

Mai 2020 Hier ist eine einfache Lösung, die ich gefunden habe und die für alle meine Projekte unter Windows aufgelöst werden kann. Wenn sich Ihr Projekt irgendwo im Verzeichnis c: befindet, erstellen Sie eine neue Datei .jshintrc und speichern Sie sie im C-Verzeichnis. Öffnen Sie diese .jshintrc-Datei und schreiben Sie { "esversion": 6}und das ist es. Die Warnungen sollten verschwinden, dasselbe funktioniert im Verzeichnis d

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein Ja, Sie können diese Einstellung auch nur für das jeweilige Projekt aktivieren, indem Sie eine .jshintrc-Datei im Stammverzeichnis Ihres Projekts erstellen und hinzufügen { "esversion": 6}

kunal rajput
quelle
0

Erstellen Sie eine .jshintrcDatei im Stammverzeichnis und fügen Sie dort die neueste js-Version: "esversion": 9und asi-Version hinzu: "asi": true( Dies hilft Ihnen, die Verwendung von Semikolons zu vermeiden.)

{
    "esversion": 9,
    "asi": true
}
JohnPix
quelle
-1

Wenn Sie Sublime Text 3 verwenden:

  • Gehen Sie zu Einstellungen -> Einstellungen
  • Unter Preferences.sublime-settings-Benutzer hinzufügen "esversion": 6
London804
quelle
-2

In einer neuen Version von Dreamweaver, um diesen Fehler zu beheben

  • Gehen Sie zu Bearbeiten-> Einstellungen-> Flusen
  • Und der Go-to-js-Regelsatz bearbeiten und vorbei

    "jshintConfig": {"esversion": 6}

Muhammad Umar Arslan Muhammad
quelle