我试图使用Serverless框架在Lambda函数上使用HummusJS进行部署。
Hummus npm图书馆需要一个二进制编译才能发挥作用。这个(hummus.node)是在其node_modules文件夹中提供的。然而,当我需要‘鹰嘴豆泥’时,图书馆就会抛出一个bug。
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);
};
模块初始化错误: 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)在require (内部/module.js:20:19)的错误(本地错误)。(/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)
发布于 2017-12-06 01:27:34
我使用docker构建二进制文件,然后将其复制到‘/node_node/hummus/bindings/hummus.ode’。
https://github.com/lambci/docker-lambda
然后我可以在复制lambda环境的docker中运行这个应用程序。
发布于 2019-03-21 22:59:27
docker-lambda解决方案绝对有效。然而,一位同事指出了一个更简单的解决方案,它不需要docker-lambda。
hummus使用node-pre-gyp构建hummus.node二进制文件,并且有一个环境变量EXTRA_NODE_PRE_GYP_FLAGS来提供附加标志。如果为AWS的运行时环境配置了适当的标志,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提取正确的二进制文件。
https://stackoverflow.com/questions/47587813
复制相似问题