Erreur: jQuery exige une fenêtre avec un document
Alors que tout fonctionnait très bien et grande jusqu'à faire mnp mise à jour et maintenant, les choses ne fonctionnent pas tout à fait comme ils ont utilisé pour.
Un peu de contexte: dans mon code j'utilise jquery pour analyser textuelle html. Je ne suis pas d'utiliser une fenêtre et je n'utilise pas jsdom. Il est utilisé à très bien fonctionner pour ce faire:
$ = require("jquery");
$(html).find("<h1>").html("The title");
Mais maintenant, je reçois ceci:
jQuery exige une fenêtre avec un document
Comment puis-je résoudre ce problème?
- Ce fil est pourquoi je déteste JS. Tout est obsolète et brisé.
Vous devez vous connecter pour publier un commentaire.
nœud.js-jQuery définition en une seule ligne:
parentWindow
n'a pas été défini. À l'aide dedefaultView
comme dans le commentaire ci-dessous il fixe.Le mécanisme national de prévention de package pour jQuery certainement utilisé pour inclure jsdom avec elle, c'est pourquoi il faudrait travailler à tous les nœuds: jQuery doit avoir une sorte de DOM environnement de travailler avec.
Vous pouvez vérifier que les anciennes versions utilisé pour l'avoir en faisant
npm install [email protected]
. Vous verrez jsdom être installé avec elle. Pour une raison quelconque, ils semblent avoir retiré jsdom depuis les dernières versions. Je ne sais pas pourquoi.Cependant, l'utilisation de jsdom 7.x pour exécuter jQuery code est simple:
Le chemin pourrait être changé pour une autre version de jQuery ou dans un fichier local.
Remarque: les versions Antérieures de jsdom, y compris les 3.la série x, aurait besoin de la ligne de
var window = jsdom.jsdom().parentWindow;
au lieu devar window = jsdom.jsdom().defaultView;
. 4.x fait en sorte queparentWindow
ne fonctionne plus.Cela a fonctionné pour moi
jsdom
doit ont changé. C'est la façon de le faire avec la version actuelle dejsdom
Je l'ai résolu. a commencer par supprimer jsdom et jquery, npm install jsdom jquery.
Puis ceci:
S'avère qu'il était important que j'avais la dernière version. Sinon il ne fonctionne pas..
parentWindow
de la propriété.createWindow()
n'existe pas.jsdom
semble avoir une nouvelle version donc maintenant, il travaille sur une façon légèrement différente. Ici vous avez un exemple:Maintenant, vous pouvez effectuer une recherche que vous avez utilisé pour faire en jQuery:
Esprit jQuery installation que vous devriez écrire
jquery
minuscules, commenpm install jquery
.(2018) - Nouveau jsdom API
Références:
Vous pouvez essayer ce qui suit avec ces paramètres de la version de votre
package.json
:Dire que vous avez un fichier appelé
page.htm
:Ensuite, vous pouvez lire à partir du fichier, de créer un DOM et fenêtre avec des JSDOM et de le passer à jquery:
sera de sortie:
Je flac présent sur le haut de ma Node.js (serveur) fichier qui utilise jQuery pour le rendu html du texte ...
et tout ce qui vient de roses.
Vous devez fournir un objet de la fenêtre. Pour ce faire, il suffit de passer parentWindow de jsdom:
Je sais que je ne suis pas dans la bonne année ici, mais j'ai peut-être trouvé une meilleure façon, puis la manière qui est proposé ici. Si vous appelez les scripts à partir de l' .fichier html, le script va connaître le document, et il a résolu le problème pour moi (au moins pour l'instant). exemple:
index.html:
initialize.js:
Laissez-moi savoir si c'est faux, je viens de commencer à travailler avec ce cadre aujourd'hui.
Je suis actuellement en utilisant de cette façon: vérifier jsdom de la documentation
J'ai utilisé neoRiley de 2 lignes sur le nœud de la ligne de commande, et testé jQuery promesses sur la ligne de commande.
Ajout de jquery vers le nœud de la ligne de commande via npm
//https://github.com/UncoolAJ86/node-jquery pour les instructions.
/home/sridhar$ node
promesse décide de la réussite de rappel, " Démarrage du jeu ..' sera imprimé
sortie de la console