javascript - 即使在 'end' 事件上指定返回后,NodeJS http.request 也不返回数据

标签 javascript node.js

基本上,我试图从网站上抓取一些数据,并在绑定(bind)到 http.request 的“end”事件的回调函数上执行 DOM 提取、删除和更新。

我也从 'end' 事件回调返回了数据,但它没有在我的路由回调函数中接收。我在那里得到未定义

下面是代码块:

var scraper = {
    extractEmail: function (directoryName) {
        var result = getDirectory(directoryName);
        if (result !== 404) {
            var protocol = result.https ? https : http;
            protocol.request({
                host: 'somevalue.net',
                method: "GET"
            }, function (res) {
                var data = '';
                res.on('data', function (chunk) {
                    data += chunk;
                });

                res.on('end', function () {
                    return data;
                });
            })
                .on('error', function (err) {
                    return err;
                })
                .end();
            //return data;
        }
        else {
            //return "Failed";
        }
    }
};

这是 Routes.js 函数:

app.get('/:directory', function (req, res) {
    var n = scraper.extractEmail(req.params.directory);
    console.log(n);
    res.send(n);
});

在这里我也没有得到n的值。

最佳答案

你的“var scraper”也在route.js 文件中吗? 我想不是这样,你无法访问其他 js 文件, 为此,请使用 module.exports。

例如。

// module.js
var name = "foobar";
// export it
exports.name = name; 



Then, in route.js...
>      //route.js
>      // get a reference to your required module
>      var myModule = require('./module'); 
>      //correct path to folder where your above file is
>      // name is a member of myModule due to the export above
>      var name = myModule.name;

关于javascript - 即使在 'end' 事件上指定返回后,NodeJS http.request 也不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744595/

相关文章:

javascript - JS 为类的每个属性定义 getter

node.js - 在 Meteor.startup 在 Meteor 应用程序中运行服务器端之前,在单独文件中声明的集合未加载

javascript - 通过监听其他输入字段的更改事件react js计算总价

javascript - 正则表达式查找 char '.' 除了以 @ 开头的单词

javascript - 是什么 !! JavaScript 中的运算符?

node.js - openShift Node 版本上的 meteor

node.js - ClientJade - 执行jade.render()时遇到问题

javascript - 在 JavaScript 中将文本转换为日期/时间对象

javascript - ASP 经典的 JScript 'import' 语法

node.js - Flutter 推送通知仅在应用程序处于后台时才有效