Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jquery 2.1.3解析node.js中的html?_Jquery_Node.js_Jsdom - Fatal编程技术网

如何使用jquery 2.1.3解析node.js中的html?

如何使用jquery 2.1.3解析node.js中的html?,jquery,node.js,jsdom,Jquery,Node.js,Jsdom,我正在尝试将node.js与jquery2.1.3和jsdom4.0.4结合使用来进行web抓取。但是我在运行jquery模块时遇到了问题。这是密码 // Load the http module to create an http server. var $ = require('jquery')(require("jsdom").jsdom().parentWindow); var http = require('http'); var request = require("request

我正在尝试将node.js与jquery2.1.3和jsdom4.0.4结合使用来进行web抓取。但是我在运行jquery模块时遇到了问题。这是密码

// Load the http module to create an http server.
var $ = require('jquery')(require("jsdom").jsdom().parentWindow); 
var http = require('http');
var request = require("request");


// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (req, res) {
    res.writeHead(200, {"Content-Type": "text/plain"});


    var uri = "http://www.forever21.com/shop/ca/en/men-tees-tanks";

    request({
        uri: uri,
    }, function(error, response, body) {
        if (error) {
            return console.error(error);
        }

        var f = $(body);

        res.write(body);

        res.end();
    });

});


// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");
我得到的错误是:

C:\Users\ME\Desktop\Apps\Waerl\node_modules\jquery\dist\jquery.js:28
                                if ( !w.document ) {
                                       ^
TypeError: Cannot read property 'document' of undefined
    at module.exports (C:\Users\ME\Desktop\Apps\Waerl\node_modules\jquery\dist
\jquery.js:28:12)
    at Object.<anonymous> (C:\Users\ME\Desktop\Apps\Waerl\server.js:2:26)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
C:\Users\ME\Desktop\Apps\Waerl\node\u modules\jquery\dist\jquery.js:28
如果(!w.document){
^
TypeError:无法读取未定义的属性“document”
在module.exports(C:\Users\ME\Desktop\Apps\Waerl\node\u modules\jquery\dist
\jquery.js:28:12)
at对象。(C:\Users\ME\Desktop\Apps\Waerl\server.js:2:26)
在模块处编译(Module.js:460:26)
在Object.Module.\u extensions..js(Module.js:478:10)
在Module.load(Module.js:355:32)
在Function.Module.\u加载(Module.js:310:12)
位于Function.Module.runMain(Module.js:501:10)
启动时(node.js:129:16)
在node.js:814:3
有人知道如何解决这个问题吗

感谢您将jsdom 4.0.0从非标准parentWindow添加到文档的标准defaultView属性

试试这个:

// Load the http module to create an http server.
var $ = require('jquery')(require("jsdom").jsdom().defaultView); 
var http = require('http');
var request = require("request");


// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (req, res) {
    res.writeHead(200, {"Content-Type": "text/plain"});


    var uri = "http://www.forever21.com/shop/ca/en/men-tees-tanks";

    request({
        uri: uri,
    }, function(error, response, body) {
        if (error) {
            return console.error(error);
        }

        var f = $(body);

        res.write(body);

        res.end();
    });

});


// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");