Pourquoi JSHint envoie-t-il un avertissement si j'utilise const?


316

C'est l'erreur que j'obtiens en utilisant 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" />

Mon code ressemble à ceci:

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

Le code fonctionne bien, seul JSHint m'avertit à chaque fois.


Je ne vois aucune question dans le texte, mais probablement vous y avez déjà répondu: "use esnext option". Et pourquoi? Ce message d'erreur n'est-il pas assez clair? constn'est pas encore JS standard.
Teemu

5
ou utilisez eslint au lieu de jshint
Rakka Rage

Réponses:


559

Lorsque constvous comptez sur des fonctionnalités ECMAScript 6 telles que , vous devez définir cette option pour que JSHint ne déclenche pas d'avertissements inutiles.

/ * jshint esnext: true * / ( Edit 2015.12.29 : syntaxe mise à jour pour refléter les commentaires de @ Olga )

/*jshint esversion: 6 */

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

Cette option, comme son nom l'indique, indique à JSHint que votre code utilise la syntaxe spécifique ECMAScript 6. http://jshint.com/docs/options/#esversion

Edit 2017.06.11 : ajout d'une autre option basée sur cette réponse .

Bien que la configuration en ligne fonctionne bien pour un fichier individuel, vous pouvez également activer ce paramètre pour l'ensemble du projet en créant un .jshintrcfichier à la racine de votre projet et en l'ajoutant à celui-ci.

{
  "esversion": 6
}

1
cela fonctionne ... bien sûr, ce serait plutôt un paramètre de ligne de commande! ... indice indice jshint folk
Scott Stensland

9
La documentation indique maintenant Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Bien que mon plug-in Webstorm intégré ne reconnaisse pas la nouvelle option. J'ai fini par préciser les deux.
Olga

5
Pour moi, son .jshintrc n'est pas .jshint, je ne sais pas s'il y a des différences dans les versions
jshint

Oups. Tu as raison. Corrigée.
James Hibbard

1
Redémarrez ensuite votre Atom, si c'est le cas
Vitor Braga

281

Vous pouvez ajouter un fichier nommé .jshintrc à la racine de votre application avec le contenu suivant pour appliquer ce paramètre à l' ensemble de la solution :

{
    "esversion": 6
}

La réponse de James suggère que vous pouvez ajouter un commentaire /*jshint esversion: 6 */pour chaque fichier, mais c'est plus de travail que nécessaire si vous avez besoin de contrôler de nombreux fichiers.


1
Existe-t-il une configuration pour l'utiliser? Mon jshint ignore simplement ce qui est à l'intérieur .jshintrc.
Ethan Yang

1
@EthanYang, Non. Il n'y a pas de configuration supplémentaire. Assurez-vous simplement que le fichier peut être trouvé par JSHint. De docs: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

J'ai reçu ce même avertissement lors de l'utilisation d'une instruction d'exportation. J'utilise VS Code et j'ai utilisé une approche similaire à la solution de Wenlong Jiang.

  1. Paramètres utilisateur

  2. Configuration JSHint

  3. "jshint.options": {} (Éditer)

  4. Utilisez des guillemets doubles lorsque vous spécifiez"esversion"

    Ou copiez cet extrait dans les paramètres utilisateur:

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

La création d'un .jshintrcfichier n'est pas nécessaire si vous souhaitez configurer les paramètres globaux de jshint pour votre éditeur


8
Je vous remercie. Certainement la meilleure réponse ici pour ceux qui utilisent du code Visual Studio. Pour référence, Paramètres utilisateur via (Mac :) "Code"> Préférences> Paramètres.
CopyJosh

1
Merci pour cette solution supplémentaire. c'est très utile.
dprogramz

42

Si vous utilisez VSCode:

1.

  • Allez dans les préférences -> paramètres ( cmd + ,)
  • Tapez jshint.optionsdans la barre de recherche
  • Passez la souris dessus et cliquez sur l'icône en forme de crayon
  • Son maintenant annexé sur le côté droit.
  • Ajoutez "esversion": 6à l'objet options.

2.

Ou ajoutez simplement ceci à vos paramètres utilisateur:

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

[UPDATE] nouveaux paramètres vscode

  • Allez dans les préférences -> paramètres ( cmd + ,)
  • taper jshintdans la recherche

Paramètres VSCode

  • continuer avec l'étape 2.

33

J'ai passé des heures à essayer de résoudre ce problème. Chaque solution parle de «définir des options». Je ne sais pas ce que ça veut dire. Enfin, je l'ai compris. Vous pouvez simplement inclure une ligne commentée en haut du fichier /*jshint esversion: 6 */.

Solution


24
Le seul problème avec cela, comme je l'ai découvert, est que vous devez ajouter le commentaire en haut de chaque fichier que vous utilisez. Une meilleure solution consiste à créer un nouveau fichier dans le dossier racine de votre application nommée .jshintrc, puis à ajouter le code suivant au fichier{ "esnext": true }
Josh Pittman

17
{ "esnext": true }est désormais obsolète . Vous devriez maintenant utiliser à la { "esversion": 6 }place.
cybersam

3
Je dois utiliser une version obsolète de JSHint, car ce n'est qu'en utilisant que "esnext": truej'ai pu résoudre ce problème. "esversion": 6n'a eu aucun effet.
Joncom

4
Ensuite, mettez à niveau votre JShint 😉
Cyril Duchon-Doris

18

Vous pouvez spécifier esversion: 6 dans l'objet d'options jshint. Veuillez voir l'image. J'utilise le plugin grunt-contrib-jshint.

entrez la description de l'image ici


2
Cela fonctionne pour ceux qui utilisent un Grunt. Ajoutez ceci à gruntfile.js
JoeTidee

1
Merci, cela a fonctionné comme un charme pour moi .Pas besoin d'ignorer les fichiers et l'implémentation individuelle de l'esversioning dans des pages exclusives
sg28

3

Lorsque vous commencez à utiliser ECMAScript 6, cette erreur est générée par votre IDE.

Deux options sont disponibles:

si vous n'avez qu'un seul fichier et que vous souhaitez utiliser l'es6, ajoutez simplement la ligne ci-dessous en haut du fichier.

/*jshint esversion: 6 */

Ou si vous avez un certain nombre de fichiers js ou si vous utilisez n'importe quel framework (comme nodejs express), vous pouvez créer un nouveau fichier nommé .jshintrcdans votre répertoire racine et ajouter du code ci-dessous dans le fichier:

{
    "esversion": 6
}

Si vous souhaitez utiliser la version es6 pour chaque projet, vous pouvez configurer votre IDE.


2

Dans votre package.json, vous pouvez dire à Jshint d'utiliser es6 comme ceci

"jshintConfig":{
    "esversion": 6 
}

Réponse acceptée en avril 2020 pour Visual Studio Code
ArifMustafa

1

Si vous utilisez Webstorm et si vous ne disposez pas de votre propre fichier de configuration, activez simplement les EcmaScript.nextoptions Relaxing dans dans

Paramètres | Langues et cadres | JavaScript | Outils de qualité du code | JSHint

Voir cette question Comment-je-résoudre-ces-erreurs JSHint-ES6


1

Si vous utilisez la configuration Grunt, vous devez effectuer les étapes suivantes

Message d'avertissement dans Jshint:

entrez la description de l'image ici

Solution:

  1. Définissez les options jshint et mappez le fichier .jshintrc.js

entrez la description de l'image ici

  1. Créez le fichier .jshintrc.js dans ce fichier, ajoutez le code suivant
{  
  "esversion": 6  
} 

Après avoir configuré cela, exécutez à nouveau Il ignorera l'avertissement,

entrez la description de l'image ici


0

Créez un fichier appelé, disons jshint_opts avec ce contenu: {"esversion": 6}

Ensuite, appelez jshint avec quelque chose comme cette ligne de commande:

jshint --config jshint_opts lib / *. js


0

Pour SublimeText 3 sur Mac:

  1. Créez un fichier .jshintrc dans votre répertoire racine (ou où vous préférez) et spécifiez l'esversion:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Référencez le pwd du fichier que vous venez de créer dans les paramètres utilisateur de SublimeLinter (Sublime Text> Préférence> Paramètres du package> SublimeLinter> Paramètres)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Quittez et relancez SublimeText

0

Mai 2020 Voici une solution simple que j'ai trouvée et elle se résoudra pour tous mes projets, sur Windows si votre projet se trouve quelque part dans le répertoire c:, créez un nouveau fichier .jshintrc et enregistrez-le dans le répertoire C ouvrez ce fichier .jshintrc et écrivez { "esversion": 6}et c'est il. les avertissements devraient disparaître, cela fonctionnera dans le répertoire d

entrez la description de l'image ici

entrez la description de l'image ici oui, vous pouvez également activer ce paramètre pour le projet spécifique uniquement en créant un fichier .jshintrc à la racine de votre projet et en ajoutant { "esversion": 6}


0

Créez un .jshintrcfichier dans le répertoire racine et ajoutez-y la dernière version js: "esversion": 9et la version asi: "asi": true(cela vous aidera à éviter d'utiliser des points-virgules)

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

0

Pour résoudre ce problème dans Dreamweaver CC 2018, je suis allé dans les préférences, modifier le jeu de règles - sélectionner JS, modifier / appliquer les modifications, trouver "esnext" et changé le faux paramètre en true. Cela a fonctionné pour moi après des heures de recherche. J'espère que cela aide les autres.


-1

Si vous utilisez Sublime Text 3:

  • Allez dans Préférences -> Paramètres
  • Sous Preferences.sublime-settings — User add "esversion": 6

-2

Dans une nouvelle version de Dreamweaver pour résoudre cette erreur

  • Allez dans Edition-> Préférence-> Linting
  • Et le go-to js Edit ensemble de règles et passé

    "jshintConfig": {"esversion": 6}

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.