无法使用http模块nodejs azure函数执行http请求

2023-12-20

我正在尝试使用节点模块发出 http 请求http在带有 javascript 的 azure 函数上,出于某种原因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);
      });

    }


我使用重写了你的代码Axios https://www.npmjs.com/package/axios。它支持开箱即用的 async/await,并简化了许多代码以按照您的预期运行,因为它使异步代码像同步代码一样执行。

我认为您可能遇到的主要问题是 JavaScript 中的所有内容都是异步的。因此,Azure Function 运行时在异步函数完成之前就退出了,因为它不像发出 HTTP 请求时的同步代码那样阻塞。如果你想使用回调,你需要调用context.done()在回调函数内,以便 Azure Functions 在回调完成之前不会退出。通过使用 async/await,您可以保证您的代码将阻塞 HTTP 请求,直到收到响应或超时。在下面的示例中,Axios 将返回一个包含数据作为元素的响应对象。我正在通过解构操作提取数据,这允许我记录data.

const axios = require('axios');
const url = 'https://google.com';

module.exports = async function (context, myTimer) {

  try {
    const { data } = await axios.get(url);
    context.log(data);
    // do something with the data
    return data;
  } catch (err) {
    context.log(err);
    // do something with the error
  }

  context.done();
}

在 Azure 函数上安装包

  1. 转到 Azure 门户;选择您的Azure功能应用程序
  2. Select Platform Features. Then Advanced Tools (Kudu) under 开发工具
  3. 使用文件资源管理器,导航至site/wwwroot/。你应该看到一个package.json文件,以及几个文件夹,每个文件夹都有您的函数名称。
  4. 从该目录运行npm install --save axios
  5. 要确认它有效,请编辑您的package.json与铅笔图标。axios应列在下面dependenciesjson元素
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用http模块nodejs azure函数执行http请求 的相关文章

随机推荐

  • ES6/7 中可以导出 Arrow 函数吗?

    下面的导出语句出现语法错误 export default const hello gt console log say hello why 我只能导出命名函数 export function hello console log hello
  • 使用 html2pdf 时如何摆脱 css 中的左边距和上边距

    我正在使用 html2pdf 我想使用 css 去掉顶部和左边距 但我不能 在输出缓冲边距已设置为 0 之前 它适用于 html 但是当我使用它将其转换为 pdf 时html2pdf http html2pdf fr en default上
  • * 不支持的操作数类型:“numpy.ndarray”和“numpy.float64”

    长期读者 第一次作家 我在谷歌和堆栈溢出上进行了搜索 但并没有真正找到这个问题的一般答案 我在使用 numpy 1 6 2 的 python 2 7 3 中收到 numpy ndarray 和 numpy float64 不受支持的操作数类
  • 如何将网站封装在手机应用程序中?

    我见过很多手机应用程序只是打开一个网页而没有控件 只是页面 我正在寻找指导和链接来开始这样简单的事情 如果您想在 Android 中封装一个网站 您可以使用以下代码来实现 Roskvist https roskvist wordpress
  • F# 析构函数的等效项

    我正在将一个将非托管库包装的 C 类转换为 F 我遇到了重写随后的析构函数的看似简单的问题 class Wrapper P Invoke ellided private SomeType x public Wrapper x new Som
  • Xamarin 安卓 |布局样式

    我正在尝试创建这种布局样式 但仍然不知道该怎么做 有人可以帮助我吗 我需要主布局 并且在布局中必须位于左侧图像视图的颜色 接下来是带有填充父级描述的标题 右侧必须是 img 干得好 我为您设计了左侧标志 标题和描述标签以及右侧图像视图控件
  • 使用 Spring Boot 的 gRPC 和 REST 微服务

    对于一个项目 我想使用 Spring Boot 设置一个小型微服务场景 其中包含一个向客户端公开 REST 和 GraphQL 的 API 网关 一个 Eureka 服务注册表和三个服务 出于性能原因 我希望 API 网关后面的所有服务都能
  • 缺少节点-v57-linux-x64/grpc_node.node

    严格执行以下步骤时 https firebase google com docs admin setup https firebase google com docs admin setup 部署到我的服务器时 我收到此错误 2017 10
  • 非 ASCII 字符需要 web.config 吗?

    尝试制作我的第一个 ASP NET 页面 在 XP 上安装了 IIS 5 1 配置为运行 NET 4 创建了一个新的虚拟目录并添加了一个 aspx 文件 当我浏览该文件时 非 ASCII 字符已损坏 例如 U 00FC 会转换为 U 00C
  • 在 Woocommerce 3 中更改自定义订单状态的电子邮件主题

    我已成功更改 Woocommerce 处理订单的电子邮件主题 using 这个线程 https stackoverflow com a 48880997 3730754 add filter woocommerce email subjec
  • 使用 Selenium 等待元素加载

    我已经仔细查看了这里 但 web 元素等待似乎不适合我的代码 我对 Java 和 Selenium 相当陌生 我想尝试在超时之前将等待元素放入我的代码中 有什么建议么 当到达这个点时它就会崩溃 因为页面确实需要一段时间来搜索这个地址 Ste
  • ffmpeg API h264编码的视频不能在所有平台上播放

    Edit 在之前的版本中 我使用了非常旧的 ffmpeg API 我现在使用最新的库 问题仅略有变化 从 主要 变为 高 我正在使用 ffmpeg C API 在 C 中创建 mp4 视频 我希望生成的视频具有 约束基线 配置文件 以便生成
  • 如何使脚本加载和es6模块加载一起工作?

    这仅加载 jquery 一次 对于以下情况也是如此 但这会加载jquery两次
  • 跨多个 SQL 服务器的唯一 ID

    我正在开发一些将在全国多个实例中使用的软件 与许多使用登录的软件一样 我需要为每个用户提供唯一的 ID 该软件的每个实例都需要完全独立地运行 但最终很可能会合并一些数据库 在本例中 我希望每个用户的 ID 在所有服务器上都是唯一的 如果服务
  • 如何销毁/释放1个活动/布局中使用的资源?

    How do I release resources used in 1 activity So I got 3 layouts and activity for each layout but the problem is when I
  • 图像 Uri 到字节数组

    我目前有两项活动 一种用于从 SD 卡提取图像 另一种用于蓝牙连接 我使用 Bundle 来传输活动 1 中图像的 Uri 现在我想做的是获取蓝牙活动中的 Uri 并通过字节数组将其转换为可传输状态我已经看到了一些示例 但我似乎无法让它们为
  • ASP.NET Core 模型绑定错误消息 ASP.NET CORE 2.0 中的本地化

    在 ASP NET CORE 1 1 中 可以使用资源文件本地化模型绑定错误消息 并配置其选项以在 Startup cs 中为 ModelBindingMessageProvider 设置消息访问器 例如 services AddMvc o
  • 数组中的最大绝对差

    我遇到了这个算法问题 我能够实现 O n 2 解决方案 有没有更好的方法在 O n 时间内做到这一点 问题 给你一个包含 N 个整数的数组 A1 A2 AN 返回最大值f i j 对全部1 i j N f i j 定义为 A i A j i
  • Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段

    我正在尝试将日志的额外字段添加为键值 同时继续使用标准日志记录库和 structlog ProcessorFormatter 这是一个例子 如果我们使用 JsonFormatter 额外的字段将作为键值添加到日志中 使用 python js
  • 无法使用http模块nodejs azure函数执行http请求

    我正在尝试使用节点模块发出 http 请求http在带有 javascript 的 azure 函数上 出于某种原因http request未接收数据 没有打印错误 就像请求被阻止一样 天蓝色的配置或代码有什么问题吗 我是否遗漏了一些非常明