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

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

} else { 

     var live ="yes" 

} 

đó là mã của tôi nhưng khi tôi chạy nó tôi nhận được lỗi sauNodejs jQuery cần 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)

những gì tôi làm

này cho một bot tôi đang làm việc

+0

Có lý do nào muốn sử dụng jquery để yêu cầu dữ liệu json trong nodej không? –

+0

Trừ khi bạn có nhu cầu về jquery ngoài $ .getJSON, tôi khuyên bạn nên sử dụng https://www.npmjs.com/package/request, đây là một trình bao bọc đơn giản hơn xung quanh mô-đun HTTP gốc của Node. – tmslnz

Trả lời

0

Vâng, đúng vậy. jQuery hy vọng 'cửa sổ' ở đó, thường là đối tượng chỉ trình duyệt. Như vậy, cửa sổ cần được mô phỏng. Đó là những gì jsdom làm.

Sau bao gồm 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); 

Xem tài liệu jsdom để biết thêm thông tin: https://www.npmjs.com/package/jsdom

+0

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

+0

là jsdom trong thư mục node_modules hoặc bất kỳ nơi nào khác có thể tải bằng 'require'? – TinkerTank

+0

nó trong node_modules – SloppierKitty7

7

tôi gặp phải cùng một vấn đề, và nó là OK bây giờ sau khi tôi thay đổi các gói từ require('jQuery') đến require('jquery'). Dường như gói sau (jquery) sử dụng phiên bản mới hơn của jQuery so với phiên bản cũ (jQuery).

+0

không có tác dụng. –

+0

cảm ơn người đàn ông tôi đã làm điều đó. –

0

gì làm việc cho tôi từ đây,

phiên bản jquery của tôi: 3.2.1

phiên bản jsdom: 10.1.0 tìm thấy một giải pháp cuối cùng:

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

vẫn không hoạt động đối với tôi: 'TypeError: $ .getJSON không phải là chức năng' – anunixercoder

10

jquery 3.2.1, jsdom 10.1.0. Nó hoạt động.

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

Hoàn hảo! Tất cả các ví dụ mã mà tôi đã tìm thấy đều là cú pháp JSDOM lỗi thời. Cám ơn rất nhiều! :) – rinogo

+0

'jQuery' -> 'jquery' làm công việc này cho tôi. – pizzaisdavid

1

Tôi gặp vấn đề tương tự và khi gỡ lỗi tôi đã biết về một điều gì đó mới mẻ.

Khi bạn làm -

npm install jQuery 

Nó cài đặt phiên bản jQuery 1.7.4 để dự án của bạn.

Và khi bạn làm -

npm install jquery 

Nó cài đặt phiên bản jQuery 3.2.1 để dự án của bạn.

enter image description here

Sự khác biệt giữa hai lệnh chỉ là hoa Q. Vì vậy, nếu bạn đang nhận được lỗi này thì có thể bạn đang sử dụng phiên bản cũ của jQuery.

Bạn có thể đọc thêm về lệnh đầu tiên (phiên bản cũ) here và về lệnh thứ hai here.

Các vấn đề liên quan