2015-09-25 32 views
5

ESLint mi dice che non ho bisogno di "use strict" nella parte superiore del mio file index.js (è un semplice server come quello a 6 righe su https://nodejs.org/en/about/). Apparentemente tutti i moduli nodo sono già in modalità rigorosa. Ha senso.Node.js ed eslint non sono d'accordo su "use strict"

Tuttavia, l'esecuzione di node index.js mi ha generato un "Errore di sintassi: [let] non supportato dalla modalità rigorosa." fa eseguito con il pragma "ridondante" "use strict".

Perché l'incoerenza? Il nodo non dovrebbe sapere che questo modulo del nodo è davvero rigido per impostazione predefinita? Ciò potrebbe essere dovuto ad una semplice errata configurazione del nodo, di ESLint o del mio IDE?

+1

È possibile eseguire il nodo con il flag '--use-strict' –

+2

ESLint è" errato ", ma configurabile:'/* eslint strict: 0 */'. – Amit

+0

Questo lo fa, @ExplosionPills! Grazie. Perché non renderlo una risposta e vincere qualche punto? –

risposta

9

ESLint prende le proprie decisioni su ciò che considera avvisi o errori validi o non validi. Devi trattare tutto ciò che eslint/jslint/jshint dice come consulenza oltre a tutto il resto. Secondo qualcuno da qualche parte i loro suggerimenti sono ottimali e perfettamente validi.

Detto questo, avete alcune opzioni per sopprimere questo specifico avvertimento:

  • Usa eslint bandiere in commenti nel codice
  • Run eslint con configurazione per specificare questo flag
  • Utilizzare il --use-strict flag when running node

Il motivo specifico per cui viene visualizzato questo avviso deve essere o con il fatto che l'interprete di nodo predefinito così com'è non è completamente pronto per ES6. Ad esempio, nel nodo 4 non è possibile utilizzare let al di fuori della modalità rigorosa anche se let è una parola chiave ES6.

+2

Trovata documentazione ufficiale al riguardo su https://nodejs.org/en/docs/es6/ e https://groups.google.com/forum/#!topic/v8-users/3UXNCkAU8Es. Fondamentalmente, il nodo richiede attualmente una modalità rigorosa per le funzionalità di scope block ES6 ('let',' const') per ragioni di compatibilità con le versioni precedenti. Qualche volta in futuro, il flag -use-strict non sarà richiesto per 'let'. È un fastidio transitorio, che lo rende più sopportabile. –

Problemi correlati