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

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

} else { 

     var live ="yes" 

} 

gerekiyor ancak bunu çalıştırdığınızda aşağıdaki hatayı alıyorumNodejs jQuery benim kodudur 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)

bu bir bot i

çalışıyorum edilir

i ne yapacağız

+0

nodejs'de json verilerini istemek için jquery'yi kullanmak neden bir neden var mı? –

+0

$ .getJSON'un ötesinde bir jQuery'ye ihtiyaç duymadıkça, Node'un doğal HTTP modülü etrafında daha basit bir sarıcı olan https://www.npmjs.com/package/request adresini kullanmanızı öneririm. – tmslnz

cevap

0

Evet, öyle. jQuery, normalde yalnızca tarayıcıya yönelik bir nesne olan 'pencere'yi orada olmasını bekler. Bu şekilde, pencere simüle edilmek zorundadır. İşte jsdom budur. Ben require('jQuery') paketi değiştirdikten sonra https://www.npmjs.com/package/jsdom

+0

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

+0

node_modules dizininde jsdom veya 'require' ile yüklenebileceği başka bir yer var mı? – TinkerTank

+0

node_modules içinde – SloppierKitty7

7

Aynı sorunla karşılaştı ve şimdi Tamam:

jsdom (npm install jsdom) dahil ettikten sonra:

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

fazla bilgi için jsdom belgelerine bakın require('jquery'). Daha sonraki bir paket (jquery) jQuery'nin daha eski bir sürümden (jQuery) daha yeni bir sürüm kullandığı anlaşılıyor.

+0

bu yardımcı olmuyor. –

+0

teşekkürler adam yaptım. –

0

şey, buradan benim için

çalıştı benim jquery sürümü: 3.2.1

jsdom sürümü: 10.1.0 nihayet bir çözüm buldu:

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

hala benim için çalışmıyor: 'TypeError: $ .getJSON bir işlev değil ' – anunixercoder

10

jquery 3.2.1, jsdom 10.1.0. İşe yarıyor.

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

Mükemmel! Bulduğum tüm kod örnekleri, güncel olmayan JSDOM sözdizimi içindi. Çok teşekkürler! :) – rinogo

+0

'jQuery' -> 'jquery' bu işi benim için yapar. – pizzaisdavid

1

Aynı sorunla karşılaştım ve hata ayıklarken yeni bir şey öğrendim.

Bunu yaptığınızda -

npm install jQuery 

Bu projenize jQuery sürüm 1.7.4 yükler.

Ve bunu yaptığında -

npm install jquery 

Bu projenize jQuery sürüm 3.2.1 yükler.

enter image description here

komut, hem arasındaki fark, sadece büyük S olup. Yani bu hatayı alıyorsanız, muhtemelen jQuery'nin eski sürümünü kullanıyorsunuzdur.

İlk komut (eski sürüm) here ve ikinci komutla ilgili daha fazla bilgiyi here okuyabilirsiniz.