索引处理程序未定义或未导出
Posted
技术标签:
【中文标题】索引处理程序未定义或未导出【英文标题】:Index handler is undefined or not exported 【发布时间】:2020-06-25 04:48:23 【问题描述】:我有一个运行良好的 lambda 函数,但我想导入一个包,所以我用 index.js 创建了一个目录并安装了我的 npm 包。
然后创建此文件夹的 zip 并使用
上传aws lambda update-function-code --function-name smrtfac-test --zip-file fileb://lambda.zip
但是现在我收到了这个错误
index.handler is undefined or not exported
这可能是什么原因?
我的index.js
和node_modules
在同一个目录中。
【问题讨论】:
【参考方案1】:这通常发生在您压缩目录时,而不是压缩目录的内容。当您打开 zip 文件浏览内容时,index.js 文件应位于 zip 文件的根目录中,而不是文件夹中。
【讨论】:
我用来解决问题的命令(从目录中运行):zip -r -D lambda.zip * 这对我有用,但是我的 bin 目录中有很多符号链接都指向图像魔法,并且没有 -y 标志,它最终对于 lambda 来说太大了。所以是的......包括 -y 标志。 由于 zip 在 Windows 中不起作用,我使用此答案中提到的命令 ***.com/a/64475079/8810941 来压缩和解压缩内容。当然,它有一些限制,但对于压缩 lambda 函数来说已经绰绰有余了。【参考方案2】:如果您的 index.js 不直接位于根文件夹下,您也可以如下更改 Handler 部分
【讨论】:
【参考方案3】:考虑为节点模块使用 Lambda 层:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
【讨论】:
【参考方案4】:这是因为您可能在目录中提交项目。您只需直接压缩所有文件,而不是将它们压缩到目录中。索引文件需要位于根目录才能被 lambda 读取和访问。
【讨论】:
【参考方案5】:如果您在 CDK 中使用 typescript,请确保您没有在主函数文件中导出另一个函数。
【讨论】:
以上是关于索引处理程序未定义或未导出的主要内容,如果未能解决你的问题,请参考以下文章
Asp.net MVC 中的 jquery 验证错误 - 无法获取属性“调用”的值:对象为空或未定义
PLS-00221 'to_date' 不是程序或未定义的错误,并转换以句点分隔的日期