J'ai l'erreur suivante dans jsLint :
'document' a été utilisé avant sa définition.
Ligne qui provoque l'erreur:
document.cookie = name + "=" + value + expires + "; path=/";
Je comprends pourquoi cela se produit, mais j'aimerais que mon code soit conforme.
Comment résoudre ça?
Merci.
Endroit
/*jslint browser:true */
au début du corps de votre fonction. Ou, alternativement, vous pouvez utiliser
/*global document: false */
JSLint est destiné à la vérification de tout code javascript, et l'objet global document
n'existe pas partout. Vous devez donc indiquer manuellement à JSLint que votre code doit être exécuté dans le navigateur et que la variable globale document
est définie. Par exemple, pour le javascript côté serveur, il est prévu que JSLint signale cette erreur.
Sur le site Web de jslint, vous pouvez lire une directive/globale/qui vous permet de définir des variables supposées être déclarées ailleurs.
Voici un exemple (placez-le en haut du fichier):
/\*global var1,var2,var3,var4,var5\*/
ou, dans le cas de starjava:
/\*global document\*/
Je ne suis pas vraiment sûr si le :true
ou le :false
est nécessaire, mais il semble que cela soit recommandé d'après ce que j'ai lu sur le site. http://www.jslint.com/lint.html
Assurez-vous que l'instruction globale initiale se trouve sur la même ligne que '/\*'
, sinon elle se brise.
si vous utilisez noeud pouvez ajouter la ligne suivante
/ * node JSLint: true * /
au début du script http://jslinterrors.com/a-was-used-before-it-was-defined/
Si tout votre code JS est censé être exécuté depuis un navigateur, ajoutez simplement l'indicateur --browser
.
jslint --browser my.js
En mode CLI, vous pouvez utiliser le fichier de configuration:
jslint.conf
{
"predef": [
"module",
"require",
"window",
"document",
"jQuery",
"Backbone",
"Marionette",
"Modernizr",
"_",
"setTimeout",
"clearTimeout",
"setInterval",
"clearInterval"
],
"evil":false,
"indent":4,
"vars":true,
"passfail":false,
"plusplus":false
}
Et utilisez jslint avec le paramètre --config jslint.conf
.