nodejs请求回调未被调用

时间:2016-05-22 06:00:55

标签: javascript node.js request

我在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);
}

1 个答案:

答案 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或您的代码。