Perché JSHint emette un avviso se sto usando const?


316

Questo è l'errore che ottengo quando utilizzo 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 avvisa ogni volta.


Non vedo alcun problema nel testo, ma probabilmente hai già risposto che: "use esnext option". E perché? Quel messaggio di errore non è abbastanza chiaro? constnon è JS standard (ancora).
Teemu,

5
o usa eslint invece di jshint
Rakka Rage

Risposte:


559

Quando si fa affidamento su funzioni di ECMAScript 6 come const, è necessario impostare questa opzione in modo che JSHint non generi avvisi non necessari.

/ * jshint esnext: true * / ( Modifica 2015.12.29 : sintassi aggiornata per riflettere i commenti di Olga )

/*jshint esversion: 6 */

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

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

Modifica 2017.06.11 : aggiunta un'altra opzione basata su questa risposta .

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

{
  "esversion": 6
}

1
funziona ... sicuramente preferirebbe essere un po 'di linea di comando! ... suggerimento suggerimento folk jshint
Scott Stensland

9
La documentazione ora dice Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Anche se il mio plug-in Webstorm incorporato non riconosce nuove opzioni. Ho finito per specificare entrambi.
Olga,

5
Per me il suo .jshintrc non .jshint, non sono sicuro se ci sono differenze nelle versioni di
jshint

Ops. Hai ragione. Corretto.
James Hibbard,

1
Quindi riavvia Atom, se è il caso
Vitor Braga,

281

È possibile aggiungere un file denominato .jshintrc nella radice dell'app con il seguente contenuto per applicare questa impostazione per l' intera soluzione :

{
    "esversion": 6
}

La risposta di James suggerisce che è possibile aggiungere un commento /*jshint esversion: 6 */per ciascun file, ma è più lavoro del necessario se è necessario controllare molti file.


1
Esiste una configurazione per l'utilizzo di questo? Il mio jshint ignora solo ciò che è dentro .jshintrc.
Ethan Yang,

1
@EthanYang, No. Non esiste una configurazione aggiuntiva. Basta assicurarsi che il file possa essere trovato da JSHint. Da documenti: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,

60

Ho ricevuto questo stesso avvertimento 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 config

  3. "jshint.options": {} (Modificare)

  4. Utilizzare le virgolette doppie quando si specifica"esversion"

    O copia questo frammento nelle Impostazioni utente:

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

La creazione di un .jshintrcfile non è necessaria se si desidera configurare le impostazioni globali di jshint per l'editor


8
Grazie. Sicuramente la migliore risposta qui per coloro che usano il codice Visual Studio. Per riferimento, Impostazioni utente tramite (Mac :) "Codice"> Preferenze> Impostazioni.
CopiaJosh

1
Grazie per questa soluzione aggiuntiva. è molto utile
dprogramz,

42

Se stai usando VSCode:

1.

  • Vai a preferenze -> impostazioni ( cmd + ,)
  • Digita jshint.optionsnella barra di ricerca
  • Passa il mouse sopra e fai clic sull'icona della matita
  • Ora è aggiunto sul lato destro.
  • Aggiungi "esversion": 6all'oggetto opzioni.

2.

O semplicemente aggiungilo alle tue impostazioni utente:

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

[AGGIORNA] nuove impostazioni vscode

  • Vai a preferenze -> impostazioni ( cmd + ,)
  • digita jshintnella ricerca

Impostazioni VSCode

  • continuare con il passaggio 2.

33

Ho passato 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 */.

Soluzione


24
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 è quella di creare un nuovo file nella cartella principale dell'app denominata .jshintrce quindi aggiungere il seguente codice al file{ "esnext": true }
Josh Pittman,

17
{ "esnext": true }è ora obsoleto . Ora dovresti usare { "esversion": 6 }invece.
cybersam,

3
Devo usare una versione obsoleta di JSHint, perché solo usando sono "esnext": truestato in grado di risolverlo. "esversion": 6non ha avuto effetto.
Joncom,

4
Quindi aggiorna il tuo JShint 😉
Cyril Duchon-Doris il

18

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

inserisci qui la descrizione dell'immagine


2
Questo funziona per coloro che usano un Grunt. Aggiungi questo a gruntfile.js
JoeTidee

1
Grazie, ha funzionato come un incantesimo per me. Non ho bisogno di ignorare i file e l'implementazione individuale di esversioning in pagine esclusive
sg28,

3

Quando inizi a utilizzare ECMAScript 6 questo errore generato dal tuo IDE.

Sono disponibili due opzioni:

se hai un solo file e desideri utilizzare es6, aggiungi semplicemente la riga sotto nella parte superiore del file.

/*jshint esversion: 6 */

Oppure, se hai un numero di file js o stai usando un framework (come nodejs express) puoi creare un nuovo file chiamato .jshintrcnella tua directory root e aggiungere il codice qui sotto nel file:

{
    "esversion": 6
}

Se vuoi usare la versione es6 in poi per ogni progetto puoi configurare il tuo IDE.


2

Nel tuo package.json puoi dire a Jshint di usare es6 in questo modo

"jshintConfig":{
    "esversion": 6 
}

Risposta accettata in aprile 2020 per Visual Studio Code
ArifMustafa il

1

Se stai usando Webstorm e se non hai il tuo file di configurazione, abilita semplicemente EcmaScript.nextin Opzioni di rilassamento in

Impostazioni | Lingue e quadri | JavaScript | Strumenti per la qualità del codice | JSHint

Vedi questa domanda How-do-I-risolvere-these-JSHint-ES6-errori


1

Se si utilizza la configurazione Grunt, è necessario eseguire le seguenti operazioni

Messaggio di avviso in Jshint:

inserisci qui la descrizione dell'immagine

Soluzione:

  1. Impostare le opzioni jshint e mappare il file .jshintrc.js

inserisci qui la descrizione dell'immagine

  1. Creare il file .jshintrc.js in quel file aggiungere il seguente codice
{  
  "esversione": 6  
} 

Dopo aver configurato questo, Esegui di nuovo salterà l'avviso,

inserisci qui la descrizione dell'immagine


0

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

Quindi invoca jshint con qualcosa come questa riga di comando:

jshint --config jshint_opts lib / *. js


0

Per SublimeText 3 su Mac:

  1. Crea un file .jshintrc nella tua directory principale (o dove preferisci) e specifica l'esversione:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Fai riferimento al pwd del file appena creato nelle impostazioni utente di SublimeLinter (Testo Sublime> Preferenze> Impostazioni pacchetto> SublimeLinter> Impostazioni)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Chiudere e riavviare SublimeText

0

Maggio 2020 Ecco una soluzione semplice che ho trovato e si risolverà per tutti i miei progetti, su Windows se il tuo progetto è da qualche parte all'interno della directory c: crea un nuovo file .jshintrc e salvalo nella directory C apri questo file .jshintrc e scrivi { "esversion": 6}e questo è esso. gli avvisi dovrebbero sparire, lo stesso funzionerà nella directory d

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine sì, puoi anche abilitare questa impostazione per il progetto specifico solo creando lo stesso file .jshintrc nella radice del tuo progetto e aggiungendo { "esversion": 6}


0

Crea il .jshintrcfile nella directory principale e aggiungi imposta la versione js più recente: "esversion": 9e la versione asi: "asi": true(ti aiuterà a evitare l'uso del punto e virgola)

{
    "esversion": 9,
    "asi": true
}

0

Per risolvere questo problema in Dreamweaver CC 2018, sono andato alle preferenze, modifica il set di regole: seleziona JS, modifica / applica le modifiche, trova "esnext" e ha modificato la falsa impostazione su true. Ha funzionato per me dopo ore di ricerca. Spero che aiuti gli altri.


-1

Se si utilizza Sublime Text 3:

  • Vai a Preferenze -> Impostazioni
  • In Preferences.sublime-settings — L'utente aggiunge "esversion": 6

-2

In una nuova versione di Dreamweaver per risolvere questo errore

  • Vai a Modifica-> Preferenze-> Linting
  • E il go-to js Modifica set di regole e passato

    "jshintConfig": {"esversion": 6}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.