web-dev-qa-db-ja.com

NodejsjQueryには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)の関数ではありませんオブジェクトでbot\node_modules\jQuery\lib\node-jquery.js:9435:18をスローします。 (E:\ Sloppers bot\node_modules\jQuery\lib\node-jquery.js:9437:2)at Module._compile(module.js:434:26)at Object.Module._extensions..js(module.js: 452:​​10)at Module.load(module.js:355:32)at Function.Module._load(module.js:310:12)at Module.require(module.js:365:17)at require(module。 js:384:17)オブジェクトで。 (E:\ Sloppers bot\bot.js:2:9)

私は何をしますか

これは私が働いているボット用です

6
SloppierKitty7

jquery 3.2.1、jsdom10.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());
13
sutara79

同じ問題が発生しましたが、パッケージをrequire('jQuery')からrequire('jquery')に変更した後は問題ありません。後のパッケージ( jquery )は、前のパッケージ( jQuery )よりも新しいバージョンのjQueryを使用しているようです。

7
realjin

私は同じ問題に直面し、デバッグ中に何か新しいことを知るようになりました。

あなたがするとき-

npm install jQuery

JQueryバージョン1.7.4をプロジェクトにインストールします。

そしてあなたがそうするとき-

npm install jquery

JQueryバージョン3.2.1をプロジェクトにインストールします。

enter image description here

両方のコマンドの違いは、大文字[〜#〜] q [〜#〜]です。したがって、このエラーが発生した場合は、おそらく古いバージョンのjQueryを使用しています。

最初のコマンド(古いバージョン) ここ と2番目のコマンド ここ についてもっと読むことができます。

3
Rito

はい、そうです。 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

0
TinkerTank

ここからは何もうまくいきませんでした

私の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();
0
Raza Ahmed