无服务器 NodeJS / 原生 node_modules

arv*_*nkx 5 amazon-web-services node.js aws-lambda serverless-framework

我在使用无服务器框架在 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 文件的文件大小在打包版本中与原始文件不同。这是正常的吗?

在此处输入图片说明

Jos*_*ery 2

我遇到了这个问题并做了一些挖掘。事实证明,serverless v1.21.0 破坏了二进制文件的打包。

https://forum.serverless.com/t/serverless-1-21-0-breaks-sharp-library/2606

https://github.com/serverless/serverless/issues/4182

建议的修复是升级到v1.21.1

  • 很好的发现。您可以更新这个答案。他们刚刚发布了“无服务器 v1.21.1”。 (2认同)