【发布时间】:2018-02-08 22:50:47
【问题描述】:
我在使用无服务器框架在 AWS Lambda 中加载节点模块时遇到问题。我的一个节点包使用本机库,因此我使用 EC2 创建 node_module 文件夹,然后将它们复制到我的无服务器项目中。如果我手动压缩项目并上传到 AWS Lambda,一切正常,但如果我在没有指定工件的情况下使用 serverless deploy,我会收到关于模块的错误(特别是:ELF file's phentsize not the expected size 关于 .node 文件)
我尝试添加excludeDevDependencies: false,这会使部署变得更大,但仍然给我错误。目前,它仅在我压缩项目文件夹的内容并将该文件指定为要上传的工件时才有效。是否有其他方法可以让具有本机绑定的节点模块与 Serverless 一起部署?
更新:关闭开发依赖项的排除,使用 serverless package 打包并检查无服务器创建的扩展 zip 文件后,我发现打包版本中 .o 和 .a 文件的文件大小与原本的。这正常吗?
【问题讨论】:
-
你的原生库是 .so?
-
我不认为问题出在库本身,而是更多地与运行
serverless deploy有关,因为如果我手动复制它们,它就可以工作。 -
我也看到了。使用节点模块中的图像文件进行测试,
serverless package然后解压缩会导致我无法打开的图像,而压缩和解压缩工作正常。
标签: node.js amazon-web-services aws-lambda serverless-framework