【发布时间】:2016-08-12 04:49:06
【问题描述】:
我有一个包含多个文件的 NodeJS AWS Lambda 函数。在 index.js 中,我执行常规的 exports.handler = function (event,context) {…}。
我还有一个 config.js 文件,它处理各种设置和 module.exports 一个配置对象。此配置文件在其他几个都需要访问这些设置(默认值、数据库设置等)的文件中是必需的。我不一定需要在 index.js 本身中使用它。
但是,我需要根据 Lambda 函数的别名(例如要使用哪个 DynamoDB 表后缀)在 config 模块中进行一些设置。虽然在exports.handler 中通过context.invokedFunctionArn(在我的情况下为PROD 或STAGE)获取别名没有问题,但我无法在我的配置文件中访问它(到处都是必需的)。
使上下文对象在我的配置模块中可用的最佳方法是什么?如何在不遇到循环依赖关系的情况下做到这一点(因为在 export.handler 完成之前需要它)?
在exports.handler 内部,来自多个文件的大量异步代码都需要执行配置。他们都需要知道运行的是哪个别名。
问题不在于如何使用别名,而在于如何使上下文对象在其他文件中可用。
谢谢!
【问题讨论】:
-
在调用处理函数之前上下文对象永远不可用。您需要等到处理函数被调用,然后才能执行任何需要来自上下文对象的数据的操作。
标签: javascript node.js aws-lambda