Node.js Jsdom возвращает [Ошибка: сокет зависает] код: 'ECONNRESET'}

Попытка использовать jsdom под nodejs и получение этой ошибки:

[Ошибка: сокет зависает] код: '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); }
   });

person smorhaim    schedule 21.02.2013    source источник


Ответы (2)


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 использует более старую версию запроса. или вы можете просто не использовать HTTP-части JSDOM.

person Jonathan Ong    schedule 21.02.2013

Это означает, что другая сторона неожиданно прервала соединение.

Когда я пытаюсь запустить ваш скрипт, я получаю следующее:

/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)
person isaacs    schedule 21.02.2013