2014-12-12 15 views
139

Questo è l'errore che ottengo quando si usa const:Perché JSHint lancia un avvertimento se sto usando 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" /> 

Il mio codice è simile al seguente:

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

Il codice funziona bene solo JSHint mi avverte ogni volta.

+0

non vedo alcun problema nel testo, ma probabilmente hai già risposto che: ' "usare esnext opzione" '. E perché? Questo messaggio di errore non è abbastanza chiaro? 'const' non è standard JS (ancora). – Teemu

+0

o usare eslint invece di jshint –

risposta

253

Quando si affidano alle funzionalità di ECMAScript 6 come const, è necessario impostare questa opzione in modo che JSHint non sollevi avvisi non necessari.

/* jshint esnext: true */ (Edit 2015/12/29: sintassi aggiornato per riflettere @Olga's comments)

/*jshint esversion: 6 */ 

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

Questa opzione, come suggerisce il nome, dice JSHint che il codice utilizza ECMAScript 6 sintassi specifica. http://jshint.com/docs/options/#esversion

Edit 2017/06/11: ha aggiunto un'altra opzione sulla base di this answer.

Mentre la configurazione in linea funziona bene per un singolo file, è anche possibile abilitare questa impostazione per l'intero progetto creando un file .jshintrc nella radice del progetto e aggiungendolo lì.

{ 
    "esversion": 6 
} 
+1

questo funziona ... certo sarebbe piuttosto un parm da riga di comando! ... suggerimento suggerimento jshint folk –

+5

La documentazione ora dice 'Avviso Questa opzione è stata deprecata e verrà rimossa nella prossima versione principale di JSHint. Usa esversion: 6 invece. Sebbene il mio plug-in Webstorm non riconosca la nuova opzione. Ho finito per specificare entrambi. – Olga

+1

Per me è .jshintrc not .jshint, non sono sicuro se ci sono differenze nelle versioni di jshint – teknopaul

20

Ho trascorso anni cercando di risolvere questo problema. Ogni soluzione parla di "opzioni di impostazione". Non so cosa significhi. Alla fine, l'ho capito. Puoi semplicemente includere una riga commentata nella parte superiore del file /*jshint esversion: 6 */.

Solution

+20

L'unico problema nel farlo in questo modo, come ho scoperto, è che devi aggiungere il commento all'inizio di ogni file che usi. Una soluzione migliore è creare un nuovo file nella cartella principale della tua app chiamata '.jshintrc' e quindi aggiungere il seguente codice al file' '' { "esnext": vero } '' ' –

+11

' {"esnext ": true}' è ora [deprecato] (http://jshint.com/docs/options/#esnext). Ora dovresti usare '{" esversion ": 6}'. – cybersam

+3

Devo usare una versione obsoleta di JSHint, perché solo utilizzando '" esnext ": true' sono riuscito a risolvere questo problema. '" esversion ": 6' non ha avuto effetto. – Joncom

191

È possibile aggiungere un file chiamato .jshintrc in radice della tua app con il seguente contenuto Per applicare questa impostazione per il intera soluzione:

{ 
    "esversion": 6 
} 

Jack's answer suggerisce che è possibile aggiungere un commento /*jshint esversion: 6 */ per ogni file, ma è più lavoro del necessario se si bisogno di controllare molti file.

+1

Questo funziona per me. Grazie! –

+1

Esiste una configurazione per l'utilizzo di questo? Il mio jshint ignora semplicemente cosa c'è dentro '.jshintrc'. –

+1

@EthanYang, No. Non c'è alcuna configurazione aggiuntiva. Assicurati solo che il file possa essere trovato da JSHint.Da docs: 'JSHint inizierà a cercare questo file nella stessa directory del file che viene liso. Se non viene trovato, si sposta di un livello verso l'alto lungo l'albero delle directory fino alla radice del filesystem. (Nota che se l'input proviene dallo stdin, JSHint non tenta di trovare un file di configurazione) ' – Zanon

12

È possibile specificare esversione: 6 all'interno dell'oggetto opzioni jshint. Si prega di vedere l'immagine. Sto usando il plugin grunt-contrib-jshint.

enter image description here

+1

Questo funziona per quelli che usano un Grunt. Aggiungi questo a gruntfile.js – JoeTidee

+0

Grazie, ha funzionato come un fascino per me. Non c'è bisogno di ignorare i file e l'implementazione individuale di esversione in pagine esclusive – sg28

13

Ho ottenuto questo stesso avviso quando si utilizza una dichiarazione di esportazione. Sto usando VS Code e ho usato un approccio simile alla soluzione di Wenlong Jiang.

  1. impostazioni utente
  2. JSHint configurazione
  3. "jshint.Opzioni ": {} (Modifica)
  4. Usa virgolette quando specificando "esversion"

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

Creazione un file .jshintrc non è necessario se si desidera configurare le impostazioni globali di jshint per l'editor

+2

Grazie. Sicuramente la migliore risposta qui per chi usa il codice dello studio visivo. Per riferimento, Impostazioni utente tramite (Mac :) "Codice"> Preferenze> Impostazioni. – CopyJosh

0

Creare un file chiamato, ad esempio jshint_opts con questo contenuto: { "esversion": 6 }

quindi richiamare jshint con qualcosa di simile questa riga di comando:

jshint --config jshint_opts lib/* js

0

Se stai usando VSCode:.

  • Vai a preferenze -> impostazioni (cmd + ,)
  • Digitare jshint.options nella barra di ricerca
  • Passare il mouse su di esso e fare clic sull'icona della matita
  • Ora è stato aggiunto sul lato destro.
  • Aggiungere "esversion": 6 all'oggetto opzioni.

O semplicemente aggiungere questo nelle impostazioni utente:

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