2015-09-25 6 views
5

ESLint sagt mir, dass ich "use strict" nicht an der Spitze meiner index.js-Datei (es ist ein einfacher Server wie der 6-Zeilen-One auf https://nodejs.org/en/about/). Anscheinend sind alle Knotenmodule bereits im strikten Modus. Macht Sinn.Node.js und eslint stimmen nicht auf "use strict"

Allerdings läuft node index.js läuft mir ein "SyntaxError: [Let] nicht außerhalb strengen Modus unterstützt." tut laufen mit dem "redundanten" "use strict" Pragma.

Warum die Inkonsistenz? Sollte Knoten nicht wissen, dass dieses Knotenmodul in der Tat strikt ist? Könnte das an einer einfachen Fehlkonfiguration von Node, ESLint oder meiner IDE liegen?

+1

Sie können Knoten mit der '--use-strict'-Flagge –

+2

ausführen ESLint ist "falsch", aber konfigurierbar: '/ * eslint strict: 0 * /'. – Amit

+0

Das macht es, @ExplosionPills! Vielen Dank. Warum nicht eine Antwort geben und ein paar Punkte gewinnen? –

Antwort

9

ESLint trifft eigene Entscheidungen über gültige oder ungültige Warnungen oder Fehler. Sie müssen alles, was eslint/jslint/jshint sagt, als Zusatz zu allem anderen behandeln. Laut jemandem sind ihre Vorschläge optimal und absolut gültig.

Davon abgesehen, haben Sie einige Optionen, um diese spezifische Warnung zu unterdrücken:

  • Verwenden eslint Flaggen in Kommentaren im Code
  • Run eslint mit Konfiguration dieses Flag angeben
  • Verwenden Sie die --use-strict Flagge beim Laufen node

Der spezifische Grund über, warum Sie diese Warnung erhalten, muss d o mit der Tatsache, dass der Standard-Node-Interpreter in seiner derzeitigen Form nicht vollständig ES6-fähig ist. In Knoten 4 können Sie beispielsweise let nicht außerhalb des strikten Modus verwenden, obwohl let ein ES6-Schlüsselwort ist.

+2

Die offizielle Dokumentation hierzu finden Sie unter https://nodejs.org/en/docs/es6/ und https://groups.google.com/forum/#!topic/v8-users/3UXNCkAU8Es. Grundsätzlich benötigt der Knoten aus Gründen der Abwärtskompatibilität derzeit einen strikten Modus für ES6-Block-Scoping-Funktionen ("let", "const"). Irgendwann in der Zukunft wird die "--use-strict" -Flagge für "Let" nicht benötigt. Es ist ein vorübergehender Ärger, der es erträglicher macht. –

Verwandte Themen