0

尝试在 nodejs 下使用 jsdom 并收到此错误:

[错误:套接字挂起]代码:'ECONNRESET'}

使用 NodeJs v0.8.20,Ubuntu 12.04

   var jsdom = require("jsdom");
    jsdom.env({
                    html: 'http://www.google.com',
                    scripts: ['http://code.jquery.com/jquery.js'],
                    done: function (errors, window) { console.log(errors); }
   });
4

2 回答 2

1

http://clock.co.uk/tech-blogs/preventing-http-raise-hangup-error-on-destroyed-socket-write-from-crashing-your-nodejs-server

基本上有一个错误,套接字挂起错误被抑制,但在节点 0.8.20 中它不再被抑制。但是,大多数模块还没有侦听该错误事件。

所以...降级你的 node.js 版本并等到 jsdom 修复它,或者使用域。很确定问题出在使用旧版本请求的 jsdom 上。或者你不能使用 JSDOM 的 HTTP 部分。

于 2013-02-21T07:19:25.040 回答
0

这意味着对方意外关闭了连接。

当我尝试运行您的脚本时,我得到了这个:

/Users/isaacs/dev/js/x/node_modules/jsdom/lib/jsdom.js:178
    features   = JSON.parse(JSON.stringify(window.document.implementation._fea
                                                          ^
TypeError: Cannot read property 'implementation' of undefined
    at exports.env.exports.jsdom.env.processHTML (/Users/isaacs/dev/js/x/node_modules/jsdom/lib/jsdom.js:178:59)
    at Request.exports.env.exports.jsdom.env [as _callback] (/Users/isaacs/dev/js/x/node_modules/jsdom/lib/jsdom.js:283:9)
    at Request.init.self.callback (/Users/isaacs/dev/js/x/node_modules/jsdom/node_modules/request/main.js:127:22)
    at Request.EventEmitter.emit (events.js:99:17)
    at Request.<anonymous> (/Users/isaacs/dev/js/x/node_modules/jsdom/node_modules/request/main.js:767:16)
    at Request.EventEmitter.emit (events.js:126:20)
    at IncomingMessage.Request.start.self.req.self.httpModule.request.buffer (/Users/isaacs/dev/js/x/node_modules/jsdom/node_modules/request/main.js:729:14)
    at IncomingMessage.EventEmitter.emit (events.js:126:20)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
于 2013-02-21T02:46:35.410 回答