Nodejs jQuery需要jsdom

$.getJSON('https://api.twitch.tv/kraken/channels/' + SLoppierKitty7, function(channel) { if (channel["stream"] == null) { var live ="no" } else { var live ="yes" } 

这是我的代码,但是当我运行它我得到以下错误

E:\ sloppers bot \ node_modules \ jQuery \ lib \ node -jquery.js:5 window = require('jsdom')。jsdom()。createWindow(); ^

TypeError:require(…)。jsdom(…)。createWindow不是E:\ create(E:\ Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:5:39) Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:9435:18在Object。 (module.js:9437:2)在Module._compile(module.js:434:26)上的位置(E:\ Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:在module.load(module.js:355:32)上的Module.require(module.js:365:17)上的Function.Module._load(module.js:310:12) js:384:17)在Object。 (E:\ Sloppers bot \ bot.js:2:9)

我该怎么办

这是我正在工作的一个机器人

我遇到了同样的问题,现在我把包从require('jQuery')更改为require('jquery')后就OK了。 看来,后来的包( jQuery )使用比前一个( jQuery )更新版本的jQuery。

jquery 3.2.1,jsdom 10.1.0。 有用。

 const jsdom = require("jsdom"); const { JSDOM } = jsdom; const { window } = new JSDOM(`<!DOCTYPE html>`); const $ = require('jQuery')(window); $('<h1>Hello</h1>').appendTo('body'); console.log($('h1').text()); 

是的,它确实。 jQuery希望“窗口”在那里,通常是一个浏览器的对象。 因此,窗口需要被模拟。 这就是jsdom所做的。

包括jsdom( npm install jsdom )后:

 // Load jsdom, and create a window. var jsdom = require("jsdom").jsdom; var doc = jsdom(); var window = doc.defaultView; // Load jQuery with the simulated jsdom window. $ = require('jquery')(window); 

有关更多信息,请参阅jsdom文档: https ://www.npmjs.com/package/jsdom

没有从这里为我工作,

我的jQuery版本:3.2.1

jsdom版本:10.1.0终于find了解决办法:

 var myHtmlString = 'akkadsf lakuseh alhf lasudfa ls<p></p>'; function jQuery(doc){ const jsdom = require("jsdom"); const { JSDOM } = jsdom; const { window } = new JSDOM(); const JQ = require("jquery")(window)(`<html>${doc || ''}</html>`); } var $ = jQuery; // my html string: var text = $(myHtmlString).text(); 

我遇到了同样的问题,在debugging的时候我开始了解新的东西。

当你这样做 –

 npm install jQuery 

它将jQuery版本1.7.4安装到您的项目中。

而当你这样做 –

 npm install jquery 

它将jQuery版本3.2.1安装到您的项目中。

在这里输入图像描述

这两个命令之间的区别只是大写的Q。 所以,如果你得到这个错误,那么你可能使用旧版本的jQuery。

您可以在这里阅读关于第一个命令(旧版本)的更多信息,以及关于第二个命令的信息 。