Variáveis ​​globais em Javascript e ESLint


100

Eu tenho vários arquivos javascript e defini algumas variáveis ​​globais em um arquivo que carrega antes dos outros. Como consequência, todos os arquivos carregados após o primeiro têm acesso à variável global. No entanto, o ESLint mostra a variável global como "não definida". Não quero mudar as regras do ESLint e gostaria de encontrar uma maneira elegante de me livrar dessas mensagens de erro. Qualquer pista? obrigado


4
-> eslint.org/docs/user-guide/configuring#specifying-globals . A documentação do ESLint é ótima, IMO, você deveria dar uma olhada nisso.
Felix Kling

Respostas:


114

Não acho que hackear regras ESLint por arquivo seja uma boa ideia.

Você deve definir globalsem .eslintrcou package.json.

Para .eslintrc:

"globals": {
    "angular": true
}

Para package.json:

"eslintConfig": {
    "globals": {
        "angular": true
    }
}

PS

Ler a documentação é uma virtude obrigatória para desenvolvedores

https://eslint.org/docs/user-guide/configuring#specifying-globals


7
Pode ser interessante notar que você define a variável global como truese você pode atribuir a variável a outra coisa e falsese ela não deve ser reatribuída.
RedSparr0w

6
Vincular a documentação é uma virtude muito apreciada nas respostas do stackoverflow.
Romain G de

@RomainG já existe o link abaixo;) Mas vou adicionar um para você
v-andrew

87

Você pode adicionar globais por arquivo ou em sua configuração. Se você não quiser mudar sua configuração, você terá que adicionar os globais usados ​​em cada arquivo.

Para especificar globais usando um comentário dentro de seu arquivo JavaScript, use o seguinte formato:

/* global var1, var2 */

Isso define duas variáveis ​​globais var1e var2. Se você quiser especificar opcionalmente que essas variáveis ​​globais nunca devem ser gravadas (somente leitura), você pode definir cada uma com um sinalizador falso:

/* global var1:false, var2:false */

http://eslint.org/docs/2.0.0/user-guide/configuring#specifying-globals

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.