在AWS Lambda上使用nodejs"ref"模块时,"无效的ELF标头"

sea*_*ers 25 amazon-web-services node.js aws-lambda

我刚刚向AWS Lambda上传了一个zip,其中包含"ref"(https://www.npmjs.com/package/ref),这是验证iOS Game Center身份验证令牌所必需的(如何验证Game Center用户)来自第三方node.js服务器).

不幸的是,调用它会导致"无效的ELF头"错误,

{
  "errorMessage": "/var/task/node_modules/ref/build/Release/binding.node: invalid ELF header",
  "errorType": "Error",
  "stackTrace": [
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)",
    "bindings (/var/task/node_modules/ref/node_modules/bindings/bindings.js:76:44)",
    "Object.<anonymous> (/var/task/node_modules/ref/lib/ref.js:5:47)",
    "Module._compile (module.js:456:26)",
    "Object.Module._extensions..js (module.js:474:10)",
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是在运行Yosemite的64位Macbook Pro上开发的,在本地运行代码没有问题.谷歌搜索"无效的ELF标题"几乎没有知道相关的结果,我真的不知道从哪里去.我是否可以在node.js区域更好地询问这个问题,或者这是相关领域,因为它可能是平台的问题?

msc*_*dex 47

当您在一个体系结构上构建然后尝试在不同的体系结构(或某些情况下的平台)上使用相同的内置插件时,会发生这种情况.

根据此页面,可能必须针对EC2上的Amazon Linux映像编译插件,以便编译的插件可在其Lambda服务上使用.

  • 链接中的重要信息。我只是想补充一点,要旋转的 EC2 实例的名称应该类似于(AMI 名称:amzn-ami-hvm-2016.03.3.x86_64-gp2)基于 http://docs.aws.amazon.com/lambda /latest/dg/current-supported-versions.html。如果您不知道要创建哪个。 (2认同)
  • 使用虚拟机时也经常发生这种情况,所以请注意,这是可靠的答案。 (2认同)

Mat*_*her 8

这并不完全适用于您的问题,但如果有人在使用 AWS Elastic Beanstalk 时偶然发现此问题,则可能是由于将目录node_modules/与其他所有内容一起上传的结果,因此您需要强制它忽略该文件。

.ebignore

node_modules/
Run Code Online (Sandbox Code Playgroud)