【发布时间】:2019-06-04 21:33:35
【问题描述】:
我正在尝试使用节点模块 http 在带有 javascript 的 azure 函数上发出 http 请求,并且由于某种原因 http.request 没有接收数据(没有打印错误,就像请求被阻止一样)。天蓝色配置或代码有什么问题吗?我是否遗漏了一些非常明显的东西?
代码在本地 js 文件上运行良好
context.log('JavaScript timer trigger function ran!', timeStamp);
按预期打印,但 context.log("SUCCESS", JSON.parse(data)); 根本没有打印。
还尝试了不同的库(request、axios)但没有成功
module.exports = async function (context, myTimer) {
var timeStamp = new Date().toISOString();
if (myTimer.IsPastDue)
{
context.log('JavaScript is running late!');
}
context.log('JavaScript timer trigger function ran!', timeStamp);
const http = require('http');
http.get('http://myAPIurl', (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
context.log("SUCCESS", JSON.parse(data));
});
}).on("error", (err) => {
context.log("ERROR: " + err.message);
});
}
【问题讨论】:
-
你不应该混合异步和回调,你的函数执行很可能在你的回调被调用之前返回。如果您将代码更改为可等待,我认为您应该开始看到您期望的结果。
-
@nelak 我删除了异步但仍然无法正常工作还尝试在 http 上等待但没有成功,也许你有一个我可以使用的最小工作示例?
-
你能检查
http模块是你依赖的一部分吗? stackoverflow.com/questions/36461247/… -
是的http模块加载正确
-
您使用的是函数运行时版本 1 还是 2 (docs.microsoft.com/en-us/azure/azure-functions/…)?
标签: javascript node.js azure http azure-functions