2016-05-15 12 views
6
$.getJSON('https://api.twitch.tv/kraken/channels/' + SLoppierKitty7, function(channel) { 

if (channel["stream"] == null) { 
    var live ="no" 

} else { 

     var live ="yes" 

} 

を必要としますが、私はそれを実行したとき、私は次のエラーを取得Nodejs jQueryのは、私のコードですjsdom

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

TypeError: require(...).jsdom(...).createWindow is not a function at create (E:\Sloppers bot\node_modules\jQuery\lib\node-jquery.js:5:39) at E:\Sloppers bot\node_modules\jQuery\lib\node-jquery.js:9435:18 at Object. (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) at Object. (E:\Sloppers bot\bot.js:2:9)

これはボットのために、私は

を働いている

私が行うのですか何

+0

jqueryを使用してnodejsのjsonデータを要求する理由はありますか? –

+0

$ .getJSONを超えてjqueryが必要な場合を除き、NodeのネイティブHTTPモジュールのより単純なラッパーであるhttps://www.npmjs.com/package/requestを使用することをお勧めします。 – tmslnz

答えて

0

はい、あります。 jQueryは 'window'がそこにあることを期待しています。通常はブラウザだけのオブジェクトです。したがって、ウィンドウをシミュレートする必要があります。それが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

https://i.gyazo.com/41235c1ff6f7952fd11cb3e10f926f67。png – SloppierKitty7

+0

はnode_modulesディレクトリのjsdom、または 'require'がロードされる場所です。 – TinkerTank

+0

それはnode_modulesにあります – SloppierKitty7

7

私は同じ問題に遭遇した、と私はrequire('jQuery')からパッケージを変更した後、それが今でOKです〜require('jquery')。それ以降のパッケージ(jquery)は、前のバージョン(jQuery)よりjQueryの最新バージョンを使用しているようです。

+0

は役に立ちません。 –

+0

ありがとう、私はそれをやった。 –

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

はまだ動作しません: 'TypeError:$ .getJSONは関数ではありません。 ' – anunixercoder

10

jqueryの3.2.1を、 jsdom 10.1.0。できます。

+0

パーフェクト!私が見つけたすべてのコード例は、古くなったJSDOM構文のものでした。本当にありがとう! :) – rinogo

+0

'jQuery' - > 'jquery'は私のためにこの仕事をします。 – pizzaisdavid

1

私は同じ問題に直面しました。私はデバッグ中に新しいことについて知りました。

あなたが -

npm install jQuery 

それはあなたのプロジェクトにjQueryのバージョン1.7.4をインストールします。

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

npm install jquery 

それはあなたのプロジェクトへのjQueryのバージョン3.2.1をインストールします。

enter image description here

両方のコマンドの違いは、単に大文字Qです。したがって、このエラーが発生した場合は、古いバージョンのjQueryを使用している可能性があります。

第1のコマンド(旧バージョン)hereと第2のコマンドhereについて詳しく読むことができます。

関連する問題