无服务器、节点和鹰嘴豆泥。编译二进制文件不起作用
Serverless, node and Hummus. Compiling a binary does not work
我正在尝试使用无服务器框架在 Lambda 函数上使用 HummusJS 进行部署。
Hummus npm 库需要二进制编译后才能运行。此 (hummus.node) 在其 node_modules 文件夹中提供。但是,当我需要 'hummus' 时,库会抛出一个错误。
const hummus = require('hummus');
module.exports.stamp = (event, context, callback) => {
const response = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true,
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: 'url' })
};
callback(null, response);
};
module initialization error: Error at Error (native) at
Object.Module._extensions..node (module.js:597:18) at Module.load
(module.js:487:32) at tryModuleLoad (module.js:446:12) at
Function.Module._load (module.js:438:3) at Module.require
(module.js:497:17) at require (internal/module.js:20:19) at
Object.
(/var/task/pdf-manipulator/node_modules/hummus/hummus.js:5:31) at
Module._compile (module.js:570:32) at Object.Module._extensions..js
(module.js:579:10)
我使用 docker-lambda 构建二进制文件,然后将其复制到“/node_modules/hummus/bindings/hummus.node”。
https://github.com/lambci/docker-lambda
然后我可以 运行 docker-lambda 中的应用程序,它再现了 lambda 环境。
docker-lambda
解决方案绝对有效。然而,一位同事指出了一个更简单的解决方案,它不需要 docker-lambda
.
hummus
使用 node-pre-gyp
构建 hummus.node
二进制文件,并且有一个环境变量 EXTRA_NODE_PRE_GYP_FLAGS
来提供额外的标志。如果为 AWS Lambda 的运行时环境配置了正确的标志,node-pre-gyp
实际上会找到存在于 https://hummus.s3-us-west-2.amazonaws.com/
.
的正确的预构建二进制文件
为此,请通过以下方式设置环境变量:
export EXTRA_NODE_PRE_GYP_FLAGS='--target_arch=x64 --target_platform=linux --target_libc=glibc'
然后执行 npm install
它应该为 AWS Lambda 提取正确的二进制文件。
我正在尝试使用无服务器框架在 Lambda 函数上使用 HummusJS 进行部署。
Hummus npm 库需要二进制编译后才能运行。此 (hummus.node) 在其 node_modules 文件夹中提供。但是,当我需要 'hummus' 时,库会抛出一个错误。
const hummus = require('hummus');
module.exports.stamp = (event, context, callback) => {
const response = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true,
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: 'url' })
};
callback(null, response);
};
module initialization error: Error at Error (native) at Object.Module._extensions..node (module.js:597:18) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object. (/var/task/pdf-manipulator/node_modules/hummus/hummus.js:5:31) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10)
我使用 docker-lambda 构建二进制文件,然后将其复制到“/node_modules/hummus/bindings/hummus.node”。
https://github.com/lambci/docker-lambda
然后我可以 运行 docker-lambda 中的应用程序,它再现了 lambda 环境。
docker-lambda
解决方案绝对有效。然而,一位同事指出了一个更简单的解决方案,它不需要 docker-lambda
.
hummus
使用 node-pre-gyp
构建 hummus.node
二进制文件,并且有一个环境变量 EXTRA_NODE_PRE_GYP_FLAGS
来提供额外的标志。如果为 AWS Lambda 的运行时环境配置了正确的标志,node-pre-gyp
实际上会找到存在于 https://hummus.s3-us-west-2.amazonaws.com/
.
为此,请通过以下方式设置环境变量:
export EXTRA_NODE_PRE_GYP_FLAGS='--target_arch=x64 --target_platform=linux --target_libc=glibc'
然后执行 npm install
它应该为 AWS Lambda 提取正确的二进制文件。