基本上,我试图从网站上抓取一些数据,并在绑定(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/