web-dev-qa-db-fra.com

ESLint - "fenêtre" n'est pas défini. Comment autoriser les variables globales dans package.json

J'assigne une propriété à l'objet window global, mais quand j'exécute eslint, j'obtiens ceci:

"fenêtre" n'est pas défini

Je vois ceci ici dans la documentation eslint :

ce qui suit définit window comme une variable globale pour le code qui ne doit pas déclencher la règle testée:

valid: [
  {
    code: "window.alert()",
    globals: [ "window" ]
  }
]

J'ai essayé d'ajouter quelque chose comme ceci au fichier package.json pour qu'eslint autorise "fenêtre" en tant que variable globale, mais je dois faire quelque chose de mal. D'après la documentation, il me semble que je devrais peut-être faire quelque chose comme cela dans un fichier séparé, mais existe-t-il un moyen de définir des variables globales autorisées directement dans le fichier package.json?

169
chevin99

Je l'ai trouvé sur cette page: http://eslint.org/docs/user-guide/configuring

Dans package.json, cela fonctionne:

"eslintConfig": {
  "globals": {
    "window": true
  }
}
96
chevin99

environment: browser contient window.

Exemple .eslintrc.json:

"env": {
    "browser": true,
    "node": true,
    "jasmine": true
  },

Plus d'informations: http://eslint.org/docs/user-guide/configuring.html#specifying-environments

Voir aussi le package.json réponse de chevin99 ci-dessous.

272
Laoujin

Ajoutez .eslintrc à la racine du projet.

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}
57
Kirk Strobeck

Votre . Eslintrc.json devrait contenir le texte ci-dessous.
Ainsi, ESLint connaît vos variables globales.

{
  "env": {
    "browser": true,
    "node": true
  }                                                                      
}
41
Sergey Andreev

Je sais qu'il ne demande pas la version inline . Mais comme cette question a presque 100 000 visites et que je suis tombée ici à la recherche de cela, je la laisserai ici pour le prochain codeur:

Assurez-vous que ESLint n’est pas exécuté avec le drapeau --no-inline-config (si cela ne vous semble pas familier, il est probable que vous soyez prêt à partir). Ensuite, écrivez ceci dans votre code (par souci de clarté et de convention, écrivez-le en haut du fichier):

/* eslint-env browser */

Cela indique à ESLint que votre environnement de travail est un navigateur. Il sait donc ce qu’il contient et s’adapte en conséquence.

Il y a beaucoup de environnements , et vous pouvez en utiliser plusieurs à la fois, par exemple en ligne:

/* eslint-env browser, node */

ou dans le fichier de configuration de votre ESLint.

Un environnement définit des variables globales prédéfinies. Les environnements disponibles sont:

  • browser - variables globales du navigateur.
  • node - Variables globales Node.js et périmètre Node.js.
  • commonjs - Variables globales CommonJS et portée de CommonJS (utilisez ceci pour le code destiné uniquement à un navigateur qui utilise Browserify/WebPack).
  • shared-node-browser - Globales communes à Node et au navigateur.

[...]

Outre les environnements, vous pouvez le faire ignorer à peu près tout ce que vous voulez. Si cela vous avertit d'utiliser console.log() mais que vous le souhaitiez néanmoins, insérez simplement:

/* eslint-disable no-console */

Vous pouvez voir la liste de toutes les règles , y compris les règles recommandées pour avoir les meilleures pratiques de codage .

6
Carles Alcolea

Si vous utilisez Angular, vous pouvez le supprimer avec:

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }
2
AndreaM16