2014-12-12 15 views
139

Dies ist der Fehler, den ich bekommen, wenn const mit:Warum gibt JSHint eine Warnung aus, wenn ich const verwende?

<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 wie folgt aus:

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

Der Code mich nur JSHint warnt jedes Mal gut funktioniert.

+0

Ich habe keine Frage im Text sehen, aber wahrscheinlich haben Sie schon beantwortet sie: '„esnext Option“ '. Und warum? Ist diese Fehlermeldung nicht klar? 'const' ist kein Standard-JS (noch). – Teemu

+0

oder eslint anstelle von jshint –

Antwort

253

Wenn Sie auf ECMAScript 6-Funktionen wie const vertrauen, sollten Sie diese Option so einstellen, dass JSHint keine unnötigen Warnungen auslöst.

/* jshint esnext: true */ (bearbeiten 2015.12.29: aktualisierte Syntax reflektieren @Olga's comments)

/*jshint esversion: 6 */ 

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

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

bearbeiten 2017.06.11: hinzugefügt eine andere Option basierend auf this answer.

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 im Stammverzeichnis Ihres Projekts eine .jshintrc-Datei erstellen und dort hinzufügen.

{ 
    "esversion": 6 
} 
+1

das funktioniert ... sicher wäre es lieber eine Befehlszeile parm! ... Hinweis Hinweis jshint folk –

+5

Die Dokumentation sagt jetzt: Warnung Diese Option ist veraltet und wird in der nächsten Hauptversion von JSHint entfernt. Verwenden Sie stattdessen esversion: 6. Obwohl mein Webstorm Built-in Plugin keine neue Option erkennt. Ich habe am Ende beides angegeben. – Olga

+1

Für mich seine .jshintrc nicht .jshint, nicht sicher, ob es Unterschiede in jshint Versionen gibt – teknopaul

20

Ich verbrachte Ewigkeiten damit, dies zu beheben. Jede Lösung spricht von "Einstellungsoptionen". Ich weiß nicht, was das bedeutet. Schließlich habe ich es herausgefunden. Sie können einfach eine auskommentierte Zeile oben in der Datei /*jshint esversion: 6 */ einfügen.

Solution

+20

Das einzige Problem mit diesem Weg, wie ich herausgefunden habe, ist, dass Sie den Kommentar an den Anfang jeder Datei hinzufügen müssen, die Sie verwenden. Eine bessere Lösung ist es, eine neue Datei im Stammordner Ihrer App mit dem Namen '.jshintrc' zu erstellen und dann den folgenden Code zur Datei' '' { "esnext" hinzuzufügen: true } '' ' –

+11

' {"esnext ": true}" ist jetzt [veraltet] (http://jshint.com/docs/options/#esnext). Sie sollten stattdessen '{" esversion ": 6}' stattdessen verwenden. – cybersam

+3

Ich muss eine veraltete Version von JSHint verwenden, denn nur mit '" esnext ": true' konnte ich das lösen. '" esversion ": 6' hatte keine Wirkung. – Joncom

191

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

{ 
    "esversion": 6 
} 

Jack's answer schlägt vor, dass Sie können einen Kommentar /*jshint esversion: 6 */ für jede Datei hinzufügen, aber es ist mehr Arbeit als nötig, wenn Sie müssen viele Dateien kontrollieren.

+1

Das funktioniert für mich. Vielen Dank! –

+1

Gibt es eine Konfiguration für die Verwendung? Mein jshint ignoriert nur, was innerhalb '.jshintrc' ist. –

+1

@EthanYang, Nein. Es gibt keine zusätzliche Konfiguration. Stellen Sie nur sicher, dass die Datei von JSHint gefunden werden kann.Aus der Dokumentation: 'JSHint sucht nach dieser Datei im selben Verzeichnis wie die Datei, die gelöscht wird. Wenn es nicht gefunden wird, wird es eine Ebene nach oben in den Verzeichnisbaum bis zum Dateisystemstamm verschoben. (Beachten Sie, dass JSHint nicht versucht, eine Konfigurationsdatei zu finden, wenn die Eingabe von stdin stammt.) – Zanon

12

Sie können angeben, esversion: 6 innerhalb jshint Optionen Objekt. Bitte sehen Sie das Bild. Ich benutze grunt-contrib-jshint-Plugin.

enter image description here

+1

Dies funktioniert für Benutzer, die einen Grunt verwenden. Fügen Sie dies zu gruntfile.js – JoeTidee

+0

Vielen Dank, arbeitete wie ein Charme für mich. Keine Notwendigkeit, Datei (en) und individuelle Implementierung von esversioning in exklusiven Seite (n) zu ignorieren – sg28

13

bekam ich diese gleiche Warnung aus, wenn eine Export Anweisung. Ich benutze VS Code und benutze einen ähnlichen Ansatz zu Wenlong Jiangs Lösung.

  1. Benutzereinstellungen
  2. JSHint Config
  3. „jshint.Optionen ": {} (Edit)
  4. Verwenden doppelte Anführungszeichen bei der Angabe "esversion"

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

Erstellen Eine .jshintrc-Datei ist nicht erforderlich, wenn Sie die globalen jshint-Einstellungen für Ihren Editor konfigurieren möchten.

+2

Vielen Dank. Definitiv die beste Antwort für diejenigen, die Visual Studio Code verwenden. Für ref, Benutzereinstellungen über (Mac :) "Code"> Einstellungen> Einstellungen. – CopyJosh

0

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

Dann jshint mit so etwas wie dieser Befehlszeile aufrufen:

jshint --config jshint_opts lib/* js

0

Wenn Sie mit VSCode.

  • zum Vorlieben ->Einstellungen (cmd + ,)
  • Typ jshint.options in die Suchleiste
  • Bewegen Sie den Mauszeiger darüber und klicken Sie auf das Stiftsymbol
  • Es ist jetzt auf der rechten Seite angehängt.
  • Fügen Sie dem Optionsobjekt "esversion": 6 hinzu.

Oder einfach fügen Sie diese in Ihren Benutzereinstellungen:

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