【发布时间】:2012-10-17 05:17:01
【问题描述】:
我正在将 jsdom 与 node.js 一起使用,我试图让它向我提供一些指示,表明发生了 http 错误。我已经设置了一个测试服务器,它只为所有请求返回一个 http 500 标头,但是当我尝试使用 jsdom 加载它时,jsdom 不会抛出任何错误,并且似乎没有向我提供任何可以识别的信息返回了 http 500 错误。检测 http 500 错误的最佳方法是什么?
【问题讨论】:
我正在将 jsdom 与 node.js 一起使用,我试图让它向我提供一些指示,表明发生了 http 错误。我已经设置了一个测试服务器,它只为所有请求返回一个 http 500 标头,但是当我尝试使用 jsdom 加载它时,jsdom 不会抛出任何错误,并且似乎没有向我提供任何可以识别的信息返回了 http 500 错误。检测 http 500 错误的最佳方法是什么?
【问题讨论】:
我看起来 jsdom 不检查状态代码。 500 状态码不会被 Node 的 HTTP 模块视为错误,因此会被 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
【讨论】: