node.js和jsdom - 无法检测到返回了http 500错误?

Nat*_*ley 4 node.js jsdom

我正在使用带有node.js的jsdom,我试图让它为我提供一些http错误已经发生的迹象.我已经设置了一个测试服务器,只为所有请求返回一个http 500标头,但当我尝试使用jsdom加载它时,jsdom不会抛出任何错误,似乎没有提供任何可识别的信息返回了http 500错误.检测http 500错误的最佳方法是什么?

jua*_*azo 8

我看起来像jsdom没有检查状态代码.Node的HTTP模块不会将500个状态代码视为错误,因此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
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

[*]请求模块:https://github.com/mikeal/request