如何从 AWS Lambda (Node.js) 中的处理程序调用 module.exports

2024-01-05

AWS 中是这么说的:

函数中的 module-name.export 值。例如, “index.handler”调用index.js中的exports.handler。

它正确地调用了这个函数:

exports.handler = (username, password) => {
    ...
}

但如果代码是这样的呢:

module.exports = (username, password) => {
    ...
}

我怎么称呼它?我尝试过的没有任何效果module.exports, module.handler, etc.


AWS Lambda 希望您的模块导出包含处理程序函数的对象。然后,您可以在 Lambda 配置中声明包含该模块的文件以及处理程序函数的名称。

Node.js 中导出模块的方式是通过module.exports财产。 a的返回值require调用的内容是module.exports文件评估末尾的属性。

exports只是一个指向的局部变量module.exports。你应该避免使用exports,然后使用module.exports,因为其他一些代码可能会覆盖module.exports,导致意外的行为。

在您的第一个代码示例中,模块正确导出具有单个函数的对象handler。然而,在第二个代码示例中,您的代码导出单个函数。由于这与 AWS Lambda 的 API 不匹配,因此不起作用。

考虑以下两个文件:export_object.js 和export_function.js:

// export_object.js

function internal_foo () {
    return 1;
}

module.exports.foo = internal_foo;

and

// export_function.js

function internal_foo () {
    return 1;
}

module.exports = internal_foo;

当我们跑步时require('export_object.js')我们得到一个具有单一函数的对象:

> const exp = require('./export_object.js')
undefined
> exp
{ foo: [Function: internal_foo] }

将其与我们运行时得到的结果进行比较require('export_function.js'),我们只得到一个函数:

> const exp = require('./export_funntion.js')
undefined
> exp
[Function: internal_foo]

当您配置 AWS Lambda 来运行名为的函数时handler,在文件中定义的模块中导出index.js,以下是调用函数时 Amazon 所做的近似操作:

const handler_module = require('index.js');
return handler_module.handler(event, context, callback);

重要的部分是调用模块中定义的处理函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 AWS Lambda (Node.js) 中的处理程序调用 module.exports 的相关文章

随机推荐

  • 改变 redux 状态深处的值

    context 我正在渲染一个带有一组动态文本元素的表单 我已经使用标准化了我的状态规范化原则 https github com paularmstrong normalizr因此有一个 elementIds 数组和一个包含 element
  • Python,Try、Except语句在X秒后超时?

    我一直在搜索这个问题 但似乎找不到确切的答案 大多数人都会陷入更复杂的事情 如多线程等 我只想做一些类似 Try except 语句的事情 如果过程没有完成在 X 秒内它将抛出异常 编辑 原因是我正在使用网站测试软件 selenium 其配
  • ASP.NET 日志记录 - 最佳实践 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Symfony 4,主义,getResult和getArrayResult和getScalarResult返回相同的结构结果

    从 symfony 4 开始 我创建了一个示例存储库类 在这个课程中 我创建了一个方法来获取所有电子邮件用户的列表 我想要一个像这样的数组结构 array email1 email2 email3 但通过 getResult 我得到了一个多
  • 如何在 TypeScript 中将类型重新导出为全局类型

    我希望有一个可全局访问的接口 在单独的文件中定义 我该怎么做 这是我的globals d ts file import Theme Style from style themes theme types declare global The
  • 我如何判断我的上下文是否仍然有效?

    我现在正在处理一个相当常见的情况 通过网络下载一些数据 然后更新视图以显示它 显然 我想在后台进行 Web 下载 然后更新主 UI 线程上的视图 现在看看我的代码 我有点担心我的 Activity 及其 UI 元素在更新之前被杀死 这是我的
  • 相对日期格式,输出过去的日期?

    我正在考虑使用 NSDateFormatter setDoesRelativeDateFormatting 将日期表示为 今天 或 昨天 我只查看过去的日期 但很好奇我会看到哪些针对英国本地化的选项 Just Today 昨天 或者任何更复
  • Android 蓝牙InputStream实时读取

    我正在开发一个 Android 应用程序 它通过蓝牙接收实时数据并将其绘制在屏幕上 该数据是陀螺仪传感器位置信息 我从定制的 Freescale Kinetis K10 微控制器板 由我自己设计和测试 发送它 对于蓝牙通信 我使用 HC 0
  • 如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

    我知道有一个ListBoxForASP NET MVC Html 辅助扩展方法中的扩展方法 但我一直认为复选框列表比列表框更用户友好 有一个非常方便的CheckBoxList旧式 WebForm 中的控制 但显然现在已经不可行了 问题是 为
  • AWS API Gateway - Elastic Beanstalk - 访问受限

    我在 Amazon EB 上有一个 NodeJS API 在 API Gateway 上有一个 API API Gateway 配置为 EB 的代理 我可以毫无问题地调用我的 API 它正在工作 但我不知道如何管理安全性 实际上 如果我使用
  • 在Python中任意时间捕获用户输入

    当用户在控制台中输入内容时 有没有办法向 python 模块发送中断 例如 如果我正在运行无限 while 循环 我可以用 try except for KeyboardInterrupt 包围它 然后在 except 块中执行我需要执行的
  • IIS Express Visual Studio 集成 - 更改站点名称

    我刚刚开始将 Visual Studio 2010 SP1 与 IIS Express 一起使用 当 Visual Studio 启动 IIS Express 时 它会指定用于启动 IIS Express 的 站点 的名称 该网站的名称似乎
  • 您如何管理开发、测试和生产中的数据库?

    我很难找到有关如何在开发 测试和生产服务器之间管理数据库模式和数据的好示例 这是我们的设置 每个开发人员都有一个运行我们的应用程序和 MySQL 数据库的虚拟机 这是他们的个人沙箱 可以为所欲为 目前 开发人员将对 SQL 架构进行更改 并
  • 将 ncurses 静态链接到程序

    我在将 ncurses 静态链接到我的程序之一时遇到一些问题 这是一个非常简单的示例程序 include
  • 无法解析符号:FusedLocationProviderClient。使用的 Google Play 服务版本为 11.0.1

    无法解析符号 FusedLocationProviderClient Google Play服务版本使用11 0 1 代码 while 声明 private FusedLocationProviderClient mfusedLocatio
  • 将 UIImage 分配到内存并释放它的正确方法是什么

    使用 Instruments 我不断发现 UIImage 内存泄漏 我认为我正在正确分配和释放内存 Instruments 中泄漏的对象被描述为 NSConcreteData 以下是分配和释放 UIImage 的正确方法吗 UIImage
  • PyQt:为什么新窗口打开后立即关闭[重复]

    这个问题在这里已经有答案了 我有一个主窗口 我想在按下按钮时打开另一个窗口 不是对话框 我的问题是新窗口打开后几乎立即关闭 我已阅读可用的文章 并尝试实施解决方案 但似乎没有运气 这是我的整个代码 import sys from PyQt4
  • 普通 ArrayList Linq c# 2 语法(需要转换)

    这个问题对我来说纯粹是学术性的 是我在这里回答的问题的衍生问题 从数组列表中检索具有特定元素值的对象 https stackoverflow com questions 19469945 retrieve object from an ar
  • 阻止提交 HTML 表单字段

    我想以编程方式允许或隐藏在 HTML5 表单中提交的表单字段 我以为我可以设置它的 CSSdisplay归因于none 但是 它仍然被提交 只是看不到 我是否可以设置另一个属性 而不是从 HTML5 文档中完全删除该元素 简单设定disab
  • 如何从 AWS Lambda (Node.js) 中的处理程序调用 module.exports

    AWS 中是这么说的 函数中的 module name export 值 例如 index handler 调用index js中的exports handler 它正确地调用了这个函数 exports handler username p