我在npm使用cardi模块,当我使用这个模块的fromUrl方法时,我的回调没有被调用。我深入研究了模块的源代码,发现导致这种情况的部分是请求方法。我将部件复制到一个新文件,添加了日志并运行它,它确实没有打印任何结果或错误/异常。
这很可能是由我提供的网址引起的: http://www.basedesign.com ,因为它与其他任何网址一起使用。它只在开头记录开始字符串。之后,它不会记录收到响应或发生例外。如果我使用任何其他网址,则会成功打印已收到回复。这个basedesign url如何导致这个问题?
编辑:我的nodejs版本是v0.10.44,请求版本是2.72.0。 这个问题不会在较新版本的nodejs上发生,但我需要使用v0.10.x版本的节点。
var request = require('request');
console.log('start');
try {
var url = 'http://www.basedesign.com';
var useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36';
var jar = request.jar();
var options = {
method: 'GET',
url: url,
followAllRedirects: true,
rejectUnauthorized: false,
headers: {
'User-Agent': useragent
},
jar: jar
};
request(options, function (error, resp, body) {
console.log('Response received');
if (error) {
console.log(error);
}
});
} catch (exception) {
console.log('Exception occured');
console.log(exception);
}
答案 0 :(得分:0)
我无法重现您的问题。我尝试将Try it page中的确切代码粘贴到request,然后我得到 Response received
。
修改强>
在tonicdev.com进行测试,我发现在Node.js与4.4.x之前它不起作用。查看API changes between v0.10 and v4,了解Node中http
的变化情况。我无法确定确切的原因,但我的猜测是,Node会处理请求/响应,而不是request
或您的代码。