Como desativar o aviso 'definir' não é definido usando JSHint e RequireJS

108

Eu uso o RequireJS AMD em meu projeto. Quando executo o jshint no meu projeto, ele gera um erro como

Em scripts AMD

 'define' is not defined.

Em casos de teste Mocha

 'describe' is not defined.
 'it' is not defined.

Como remover esse aviso no jshint?

Fizer Khan
fonte

Respostas:

187

Só para expandir um pouco, aqui está uma .jshintrcconfiguração para o Mocha:

{
  ....
  "globals"   : {
    /* MOCHA */
    "describe"   : false,
    "it"         : false,
    "before"     : false,
    "beforeEach" : false,
    "after"      : false,
    "afterEach"  : false
  }
}

Dos documentos JSHint - o falso (o padrão) significa que a variável é somente leitura.

Se estiver definindo globais apenas para um arquivo específico, você pode fazer o seguinte:

/*global describe, it, before, beforeEach, after, afterEach */
bendytree
fonte
41
podemos usar {"mocha": true} 2.5.1+ github.com/jshint/jshint/issues/1330
gwokae
@bendytree você sabe se posso adicionar essas regras para alguns arquivos / pastas não globais?
Gobliins
Comentário de @Gobliins Bohdan acima. Adicione essa linha como a primeira linha do seu arquivo de teste mocha e isso aplicará a regra apenas para esse arquivo
Isaac
15
jshint: {
  options: {
    mocha: true,
  }
}

é o que você quer

Grant Fong
fonte
12

Para evitar o aviso não definido em jshint para o javascript, adicione comentários como:

/*global describe:true*/

Opções

Roland Puntaier
fonte
8

Adicione isso ao seu .jshintrc

"predef" : ["define"]   // Custom globals for requirejs
Shital Shah
fonte
Não sei por que alguém votou contra isso. Estou usando isso exatamente em meus projetos e é mais limpo do que outras respostas e obras.
Shital Shah
19
Predef está obsoleto, use globals
Jonathan Azulay
@JonathanAzulay Não encontrei nenhuma nota de depreciação em jshint.com/docs/options/#predef . Eu acho que Global pode ser usado para JavaScript Global customizado, por exemplo angular, $, jQuery etc e predef pode ser usado para objetos globais implícitos como janela, documento, console etc
Amitesh
6

atrasado para a festa, mas use esta opção em jshintrc:

"dojo": true

e tu deves descansar em paz sem avisos vermelhos ...

Gilad Peleg
fonte
6

Se você estiver trabalhando no node js. Adicione essas duas linhas no início do seu arquivo

/*jslint node: true */
"use strict";
Salihcenap
fonte
Esta pergunta é sobre JSHint .
PointedEars de
1

Se você está tentando executar JSHint no WebStorm com Mocha, como estou, vá para:

WebStorm> Preferências> Idiomas e estruturas> JavaScript> Ferramentas de qualidade de código> JSHint

Role para baixo até "Ambientes" e certifique-se de ter selecionado a caixa de seleção para habilitar "Mocha", que configurará as definições de JSHint para Mocha para você.

Nyarasha
fonte