【问题标题】:nodejs request callback is not called不调用nodejs请求回调
【发布时间】:2016-05-22 15:49:35
【问题描述】:

我正在使用来自 npm 的 cardi 模块,当我使用该模块的 fromUrl 方法时,我的回调没有被调用。我深入研究了模块的源代码,发现导致这种情况的部分是 request 方法。我将该部分复制到一个新文件中,添加了日志并运行它,它确实没有打印任何结果或错误/异常。

这很可能是由我提供的网址引起的:http://www.basedesign.com,因为它可以与任何其他网址一起使用。它只在开头记录 start 字符串。之后,它不会记录收到的响应或发生异常。如果我使用任何其他 url,它会成功打印 Response received。这个 basedesign url 是如何导致这个问题的?

编辑:我的 nodejs 版本是 v0.10.44,请求版本是 2.72.0。 较新版本的 nodejs 不会出现此问题,但是我需要使用 v0.10.x 版本的 node。

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

【问题讨论】:

    标签: javascript node.js request


    【解决方案1】:

    我无法重现您的问题。我尝试将您的确切代码粘贴到 request 的 Try it page 中,结果得到 Response received。


    编辑

    在tonicdev.com 进行测试,我发现它在 Node.js 与 4.4.x 之前无法使用。查看 API changes between v0.10 and v4 以了解 Node.js 中 http 的变化。我无法确定确切的原因,但我的猜测是 Node 处理请求/响应而不是 request 或您的代码。

    【讨论】:

    • 你能试试node版本0.10.44吗?
    • @erdem 如果可能,请将node 和request 的版本更新到最新的稳定版本。请将您的node 和request 版本添加到您的问题中。
    • 谢谢@Jesse。我更新了问题。但是,我无法更新我的节点版本。我的代码是大项目的一部分,它使用节点 v0.10.x。
    • 实际上,因为它适用于 4.4 而不是适用于 4.3,它应该与从 4.3 到 4.4 的更新有关。但是,我检查了更新日志,还没有找到可以解决问题的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    相关资源
    最近更新 更多