Nodejs jQuery需要jsdom

时间:2016-05-15 14:47:25

标签: javascript json node.js twitch

$.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不是函数           at create(E:\ Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:5:39)           在E:\ Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:9435:18           在对象。 (E:\ Sloppers bot \ node_modules \ jQuery \ lib \ node-jquery.js:9437:2)           在Module._compile(module.js:434:26)           at Object.Module._extensions..js(module.js:452:10)           在Module.load(module.js:355:32)           在Function.Module._load(module.js:310:12)           在Module.require(module.js:365:17)           at require(module.js:384:17)           在对象。 (E:\ Sloppers bot \ bot.js:2:9)

我该怎么做

这是我正在工作的机器人

5 个答案:

答案 0 :(得分:13)

jquery 3.2.1,jsdom 10.1.0。它有效。

git reset --hard upstream/master

答案 1 :(得分:7)

我遇到了同样的问题,现在我将包从require('jQuery')更改为require('jquery')后就可以了。似乎后一个包(jquery)使用了比前一个更新版本的jQuery(jQuery)。

答案 2 :(得分:3)

我遇到了同样的问题,在调试过程中,我开始了解新的事情。

当你这样做时 -

npm install jQuery

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

当你这样做时 -

npm install jquery

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

enter image description here

两个命令之间的差异只是大写的 Q 。因此,如果您收到此错误,那么您可能正在使用旧版本的jQuery。

您可以阅读有关第一个命令(旧版本)here以及第二个命令here的更多信息。

答案 3 :(得分:0)

是的,确实如此。 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

答案 4 :(得分:0)

从这里起,对我来说没什么用,

我的jquery版本:3.2.1

jsdom版本:10.1.0 终于找到了解决方案:

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();