¿Por qué JSHint lanza una advertencia si estoy usando const?

316

Este es el error que obtengo cuando uso 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" />

Mi código se ve así:

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

El código funciona bien, solo JSHint me advierte cada vez.

Andre Schlesinger
fuente
No veo ninguna pregunta en el texto, pero probablemente ya he contestado que: "use esnext option". ¿Y por qué? ¿No es ese mensaje de error bastante claro? constno es estándar JS (todavía).
Teemu
55
o el uso eslint en lugar de jshint
Rage Rakka

Respuestas:

559

Al confiar en características de ECMAScript 6 como const, debe configurar esta opción para que JSHint no genere advertencias innecesarias.

/ * jshint esnext: true * / ( Editar 2015.12.29 : sintaxis actualizada para reflejar los comentarios de @ Olga )

/*jshint esversion: 6 */

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

Esta opción, como su nombre lo indica, le dice a JSHint que su código usa la sintaxis específica de ECMAScript 6. http://jshint.com/docs/options/#esversion

Editar 2017.06.11 : se agregó otra opción basada en esta respuesta .

Si bien la configuración en línea funciona bien para un archivo individual, también puede habilitar esta configuración para todo el proyecto creando un .jshintrcarchivo en la raíz de su proyecto y agregándolo allí.

{
  "esversion": 6
}
James Hibbard
fuente
1
esto funciona ... ¡seguro que preferiría ser una línea de comando parm! ... pista pista jshint folk
Scott Stensland
99
La documentación ahora dice que Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.aunque mi plugin incorporado de Webstorm no reconoce una nueva opción. Terminé especificando ambos.
Olga
55
Para mí es .jshintrc no .jshint, no estoy seguro de si hay diferencias en las versiones de
jshint
Ups Estás en lo correcto. Corregido
James Hibbard
1
Luego reinicie su Atom, si es el caso
Vitor Braga
281

Puede agregar un archivo llamado .jshintrc en la raíz de su aplicación con el siguiente contenido para aplicar esta configuración a toda la solución :

{
    "esversion": 6
}

La respuesta de James sugiere que puede agregar un comentario /*jshint esversion: 6 */para cada archivo, pero es más trabajo de lo necesario si necesita controlar muchos archivos.

Zanon
fuente
1
¿Hay una configuración para usar esto? Mi jshint simplemente ignora lo que hay dentro .jshintrc.
Ethan Yang
1
@EthanYang, No. No hay configuración adicional. Solo asegúrese de que JSHint pueda encontrar el archivo. De documentos: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

Recibí esta misma advertencia cuando uso una declaración de exportación. Estoy usando VS Code y utilicé un enfoque similar a la solución de Wenlong Jiang.

  1. Ajustes de usuario

  2. Configuración JSHint

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

  4. Use comillas dobles cuando especifique"esversion"

    O copie este fragmento en la Configuración de usuario:

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

.jshintrcNo es necesario crear un archivo si desea configurar los ajustes globales de jshint para su editor

Nicholas Gentile
fuente
8
Gracias. Definitivamente la mejor respuesta aquí para aquellos que usan código de estudio visual. Para referencia, Configuración de usuario a través de (Mac :) "Código"> Preferencias> Configuración.
CopyJosh
1
Gracias por esta solución adicional. es de mucha ayuda.
dprogramz
42

Si está usando VSCode:

1)

  • Vaya a preferencias -> configuración ( cmd + ,)
  • Escribe jshint.optionsen la barra de búsqueda
  • Desplázate sobre él y haz clic en el ícono de lápiz
  • Ahora se adjunta en el lado derecho.
  • Agregar "esversion": 6al objeto de opciones.

2)

O simplemente agregue esto a su configuración de usuario:

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

[ACTUALIZAR] nueva configuración de vscode

  • Vaya a preferencias -> configuración ( cmd + ,)
  • escribir jshinten la búsqueda

Configuraciones de VSCode

  • continuar con el paso 2.
Phil
fuente
33

Pasé años tratando de arreglar esto. Cada solución habla de 'configurar opciones'. No sé lo que eso significa. Finalmente, lo descubrí. Simplemente puede incluir una línea comentada en la parte superior del archivo /*jshint esversion: 6 */.

Solución

Josh Pittman
fuente
24
El único problema con hacerlo de esta manera, como descubrí, es que debes agregar el comentario en la parte superior de cada archivo que uses. Una mejor solución es crear un nuevo archivo en la carpeta raíz de su aplicación llamada .jshintrcy luego agregar el siguiente código al archivo{ "esnext": true }
Josh Pittman
17
{ "esnext": true }ahora está en desuso . Ahora deberías usar { "esversion": 6 }en su lugar.
ciberesam
3
Debo estar usando una versión desactualizada de JSHint, porque solo usando "esnext": truepude resolver esto. "esversion": 6no tuvo efecto
Joncom
44
A continuación, actualice su JShint 😉
Cyril Duchon-Doris
18

Puede especificar esversion: 6 dentro del objeto de opciones jshint. Por favor mira la imagen. Estoy usando el complemento grunt-contrib-jshint.

ingrese la descripción de la imagen aquí

Wenlong Jiang
fuente
2
Esto funciona para aquellos que usan un Grunt. Agregue esto a gruntfile.js
JoeTidee
1
Gracias, funcionó de maravilla para mí. No es necesario ignorar los archivos y la implementación individual de la conversión en páginas exclusivas
sg28
3

Cuando comience a usar ECMAScript 6, este error lo arrojará su IDE.

Hay dos opciones disponibles:

si solo tiene un archivo y desea usar el es6, simplemente agregue la línea siguiente en la parte superior del archivo.

/*jshint esversion: 6 */

O si tiene un número de archivos js o está utilizando algún marco (como nodejs express) puede crear un nuevo archivo con nombre .jshintrcen su directorio raíz y agregar el código a continuación en el archivo:

{
    "esversion": 6
}

Si desea utilizar la versión es6 en adelante para cada proyecto, puede configurar su IDE.

Prashant Barve
fuente
2

En su package.json puede decirle a Jshint que use es6 como este

"jshintConfig":{
    "esversion": 6 
}
Singhak
fuente
Respuesta aceptada en abril de 2020 para Visual Studio Code
ArifMustafa
1

Si está utilizando Webstorm y no tiene su propio archivo de configuración, habilite las EcmaScript.nextopciones de Relajación en

Configuraciones | Idiomas y marcos | JavaScript | Herramientas de calidad de código | JSHint

Ver esta pregunta Cómo-resuelvo estos errores JSHint-ES6

Sudhanshu Gaur
fuente
1

Si está utilizando la configuración de Grunt, debe realizar los siguientes pasos

Mensaje de advertencia en Jshint:

ingrese la descripción de la imagen aquí

Solución:

  1. Establezca las opciones de jshint y asigne el archivo .jshintrc.js

ingrese la descripción de la imagen aquí

  1. Cree el archivo .jshintrc.js en ese archivo, agregue el siguiente código
{  
  "esversion": 6  
} 

Después de configurar esto, Ejecutar nuevamente Saltará la advertencia,

ingrese la descripción de la imagen aquí

Sridhar
fuente
0

Cree un archivo llamado, diga jshint_opts con este contenido: {"esversion": 6}

Luego invoque jshint con algo como esta línea de comando:

jshint --config jshint_opts lib / *. js

Alan Wendt
fuente
0

Para SublimeText 3 en Mac:

  1. Cree un archivo .jshintrc en su directorio raíz (o donde prefiera) y especifique la versión:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Consulte el archivo pwd del archivo que acaba de crear en la configuración de usuario de SublimeLinter (Sublime Text> Preference> Package Settings> SublimeLinter> Settings)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Salga y reinicie SublimeText
laptita
fuente
0

Mayo de 2020 Aquí hay una solución simple que encontré y se resolverá para todos mis proyectos, en Windows si su proyecto está en algún lugar dentro del directorio c: cree un nuevo archivo .jshintrc y guárdelo en el directorio C, abra este archivo .jshintrc y escriba { "esversion": 6}y eso es eso. las advertencias deberían desaparecer, lo mismo funcionará en el directorio d

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí sí, también puede habilitar esta configuración para el proyecto específico solo creando un archivo .jshintrc en la raíz de su proyecto y agregando { "esversion": 6}

kunal rajput
fuente
0

Cree el .jshintrcarchivo en el directorio raíz y agregue allí la última versión js: "esversion": 9y la versión asi: "asi": true(le ayudará a evitar el uso de punto y coma)

{
    "esversion": 9,
    "asi": true
}
JohnPix
fuente
0

Para solucionar esto en Dreamweaver CC 2018, fui a las preferencias, edite el conjunto de reglas: seleccione JS, edite / aplique cambios, busque "esnext" y cambie la configuración falsa a verdadero. Funcionó para mí después de horas de investigación. Espero que ayude a los demás.

usuario13758676
fuente
-1

Si usa Sublime Text 3:

  • Vaya a Preferencias -> Configuración
  • En Preferencias.sublime-settings — Usuario agrega "esversion": 6
Londres804
fuente
-2

En una nueva versión de Dreamweaver para resolver este error

  • Vaya a Editar-> Preferencia-> Linting
  • Y el conjunto de reglas Go-to js Edit y pasado

    "jshintConfig": {"esversion": 6}

Muhammad Umar Arslan Muhammad
fuente