node.js и jsdom - нет способа обнаружить, что была возвращена ошибка http 500?

Я использую jsdom с node.js и пытаюсь заставить его предоставить мне некоторое указание на то, что произошла ошибка http. Я настроил тестовый сервер, который просто возвращает заголовок http 500 для всех запросов, но когда я пытаюсь загрузить его с помощью jsdom, jsdom не выдает никаких ошибок и, похоже, не предоставляет мне никакой информации, которая могла бы идентифицировать что была возвращена ошибка http 500. Как лучше всего обнаружить ошибку http 500?


person Nathan Ridley    schedule 17.10.2012    source источник


Ответы (1)


Похоже, jsdom не проверяет коды состояния. Коды состояния 500 не считаются ошибками HTTP-модуля Node, поэтому jsdom считает их правильным ответом.

Я предлагаю вам проверить код состояния самостоятельно, прежде чем использовать jsdom, и передать jsdom тело вашего ответа, то есть:

var jsdom = require('jsdom').jsdom;
var request = require('request');  //jsdom already uses request*

request("http://www.google.com/", function (err, response, body) {
  if (!err && response.statusCode == 200) {
    jsdom.env(body, function (errors, window) {
      // your code
    });
  }
});

[*] Модуль запроса: https://github.com/mikeal/request

person juandopazo    schedule 20.10.2012
comment
Вот строка, в которой jsdom делает запрос: github.com/ tmpvar/jsdom/blob/master/lib/jsdom.js#L271 Вы можете видеть, что он смотрит только на ошибку и тело и игнорирует остальную часть запроса. - person Eric; 21.10.2012