Por que o JSHint lança um aviso se estou usando const?

316

Este é o erro que recebo ao usar 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" />

Meu código fica assim:

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

O código funciona bem apenas JSHint está me avisando o tempo todo.

Andre Schlesinger
fonte
Não vejo qualquer pergunta no texto, mas provavelmente você já respondeu: "use esnext option". E porque? Essa mensagem de erro não é clara? constainda não é o JS padrão.
Teemu 12/12
5
ou uso eslint em vez de jshint
Rakka raiva

Respostas:

558

Ao confiar nos recursos do ECMAScript 6, como const, você deve definir esta opção para que o JSHint não apresente avisos desnecessários.

/ * jshint esnext: true * / ( Edit 2015.12.29 : sintaxe atualizada para refletir os comentários de @ Olga )

/*jshint esversion: 6 */

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

Essa opção, como o nome sugere, informa ao JSHint que seu código usa sintaxe específica do ECMAScript 6. http://jshint.com/docs/options/#esversion

Editar 2017.06.11 : adicionada outra opção com base nesta resposta .

Enquanto a configuração embutida funciona bem para um arquivo individual, você também pode habilitar essa configuração para todo o projeto, criando um .jshintrcarquivo na raiz do seu projeto e adicionando-o.

{
  "esversion": 6
}
James Hibbard
fonte
1
isso funciona ... com certeza preferiria que seja alguma linha de comando parm! ... dica dica jshint folk
Scott Stensland
9
A documentação agora diz: Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Embora meu plug-in incorporado de Webstorm não reconheça uma nova opção. Acabei especificando ambos.
Olga
5
Para mim é .jshintrc não .jshint, não tenho certeza se há diferenças nas versões jshint
teknopaul
Opa Você está certo. Corrigido.
precisa
1
Reinicie o Atom, se for o caso
Vitor Braga
280

Você pode adicionar um arquivo chamado .jshintrc na raiz do seu aplicativo com o seguinte conteúdo para aplicar essa configuração a toda a solução :

{
    "esversion": 6
}

A resposta de James sugere que você pode adicionar um comentário /*jshint esversion: 6 */para cada arquivo, mas é mais trabalhoso do que o necessário se você precisar controlar muitos arquivos.

Zanon
fonte
1
Existe uma configuração para usar isso? Meu jshint simplesmente ignora o que está dentro .jshintrc.
Ethan Yang
1
@ EthanYang, Não. Não há configuração extra. Apenas certifique-se de que o arquivo possa ser encontrado pelo 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
59

Recebi o mesmo aviso ao usar uma instrução de exportação. Estou usando o VS Code e usei uma abordagem semelhante à solução de Wenlong Jiang.

  1. Configurações do Usuário
  2. Configuração JSHint
  3. "jshint.options": {} (Editar)
  4. Use aspas duplas ao especificar"esversion"

    Ou copie esse snippet nas Configurações do usuário:

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

.jshintrcNão é necessário criar um arquivo se você deseja definir as configurações globais de jshint para o seu editor.

Nicholas Gentile
fonte
8
Obrigado. Definitivamente, a melhor resposta aqui para quem usa código do visual studio. Para ref, Configurações do Usuário via (Mac :) "Código"> Preferências> Configurações.
CopyJosh
1
Obrigado por esta solução adicional. é muito útil.
Dprogramz 20/08/19
41

Se você estiver usando o VSCode:

1

  • Vá para preferências -> configurações ( cmd + ,)
  • Digite jshint.optionsna barra de pesquisa
  • Passe o mouse sobre ele e clique no ícone de lápis
  • Agora está anexado no lado direito.
  • Adicione "esversion": 6ao objeto de opções.

2)

Ou simplesmente adicione isso às suas configurações de usuário:

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

[UPDATE] novas configurações de vscode

  • Vá para preferências -> configurações ( cmd + ,)
  • digite jshintna pesquisa

Configurações do VSCode

  • continue com o passo 2.
Phil
fonte
32

Passei séculos tentando consertar isso. Toda solução fala sobre 'opções de configuração'. Não sei o que isso significa. Finalmente, eu descobri. Você pode incluir apenas uma linha comentada na parte superior do arquivo /*jshint esversion: 6 */.

Solução

Josh Pittman
fonte
24
O único problema em fazê-lo dessa maneira, como eu descobri, é que você deve adicionar o comentário na parte superior de cada arquivo usado. Uma solução melhor é criar um novo arquivo na pasta raiz de vocês App chamada .jshintrce, em seguida, adicione o seguinte código para o arquivo{ "esnext": true }
Josh Pittman
17
{ "esnext": true }agora está obsoleto . Agora você deve usar { "esversion": 6 }.
cybersam
3
Eu devo estar usando uma versão desatualizada do JSHint, porque somente usando "esnext": trueeu consegui resolver isso. "esversion": 6não teve efeito.
Joncom
4
Então atualize seu JShint int
Cyril Duchon-Doris
18

Você pode especificar esversion: 6 dentro do objeto de opções jshint. Por favor, veja a imagem. Estou usando o plugin grunt-contrib-jshint.

insira a descrição da imagem aqui

Wenlong Jiang
fonte
2
Isso funciona para quem usa um Grunt. Adicione isto ao gruntfile.js
JoeTidee
1
Obrigado, trabalhou como um encanto para mim. Não há necessidade de ignorar arquivo (s) e implementação individual de esversioning em página (s) exclusiva (s)
sg28
3

Quando você começa a usar o ECMAScript 6, esse erro é gerado pelo seu IDE.

Existem duas opções disponíveis:

se você possui apenas um arquivo e deseja usar o es6, basta adicionar a linha abaixo na parte superior do arquivo.

/*jshint esversion: 6 */

Ou, se você possui um número de arquivos js ou está usando alguma estrutura (como o nodejs express), pode criar um novo arquivo nomeado .jshintrcem seu diretório raiz e adicionar o código abaixo no arquivo:

{
    "esversion": 6
}

Se você quiser usar a versão es6 em diante para cada projeto, poderá configurar seu IDE.

Prashant Barve
fonte
2

No package.json, você pode dizer ao Jshint para usar o es6 assim

"jshintConfig":{
    "esversion": 6 
}
Singhak
fonte
Resposta aceita em abril de 2020 para o Visual Studio Code
ArifMustafa
1

Se você estiver usando Webstorm e se não tiver seu próprio arquivo de configuração, ative as EcmaScript.nextopções Relaxing in in

Configurações | Idiomas e estruturas | JavaScript | Ferramentas de qualidade de código | JSHint

Veja esta pergunta Como faço para resolver estes erros de JSHint-ES6

Sudhanshu Gaur
fonte
1

Se você estiver usando a configuração do Grunt, precisará executar as seguintes etapas

Mensagem de aviso no Jshint:

insira a descrição da imagem aqui

Solução:

  1. Defina as opções jshint e mapeie o arquivo .jshintrc.js

insira a descrição da imagem aqui

  1. Crie o arquivo .jshintrc.js nesse arquivo e adicione o seguinte código
{  
  "versão": 6  
} 

Depois de configurado, execute novamente. Irá pular o aviso,

insira a descrição da imagem aqui

Sridhar
fonte
0

Crie um arquivo chamado, digamos jshint_opts, com este conteúdo: {"esversion": 6}

Em seguida, chame o jshint com algo como esta linha de comando:

jshint --config jshint_opts lib / * .js

Alan Wendt
fonte
0

Para o SublimeText 3 no Mac:

  1. Crie um arquivo .jshintrc no diretório raiz (ou onde preferir) e especifique a versão:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Consulte o código do arquivo que você acabou de criar nas configurações do usuário do SublimeLinter (Texto sublime> Preferências> Configurações do pacote> SublimeLinter> Configurações)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Sair e reiniciar o SublimeText
laptite
fonte
0

Maio 2020 Aqui está uma solução simples que eu encontrei e ele vai resolver para todos os meus projetos, nas janelas se o seu projeto está em algum lugar dentro de c: diretório, crie novo .jshintrc arquivo e salvá-lo no diretório C abrir este arquivo .jshintrc e escrever { "esversion": 6}e que é isto. os avisos devem desaparecer, o mesmo funcionará no diretório d

insira a descrição da imagem aqui

insira a descrição da imagem aqui sim, você também pode habilitar essa configuração para o projeto específico apenas criando um arquivo .jshintrc na raiz do seu projeto e adicionando { "esversion": 6}

kunal rajput
fonte
0

Crie um .jshintrcarquivo no diretório raiz e adicione lá a versão js mais recente: "esversion": 9e a versão asi: "asi": true(isso ajudará você a evitar o uso de ponto e vírgula)

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

Para corrigir isso no Dreamweaver CC 2018, fui às preferências, edite o conjunto de regras - selecione JS, edite / aplique alterações, encontre "esnext" e alterei a configuração falsa para true. Funcionou para mim depois de horas de pesquisa. Espero que ajude os outros.

user13758676
fonte
-1

Se você estiver usando o Sublime Text 3:

  • Vá para Preferências -> Configurações
  • Em Preferences.sublime-settings - o usuário adiciona "esversion": 6
London804
fonte
-2

Em uma nova versão do Dreamweaver para resolver esse erro

  • Vá em Editar-> Preferências-> Linting
  • E o conjunto de regras go-to js Edit e o passado

    "jshintConfig": {"esversion": 6}

Muhammad Umar Arslan Muhammad
fonte