Безсерверный, нод и хумус. Компиляция двоичного файла не работает
Я пытаюсь использовать HummusJS для лямбда-функции с использованием Serverless Framework для развертывания.
Для библиотеки Hummus npm необходим двоичный файл, скомпилированный для работы. Это (hummus.node) находится в его папке node_modules. Однако, когда мне требуется "хумус", библиотека выдает ошибку.
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) в Module.load (module.js:487:32) в tryModuleLoad (module.js:446:12) в Function.Module._load (module.js:438:3) в Module.require (module.js:497:17) по требованию (internal/module.js:20:19) в Object. (/var/task/pdf-manipulator/node_modules/hummus/hummus.js:5:31) в Module._compile (module.js:570:32) в Object.Module._extensions..js (module.js:579:10)
1 ответ
Я использовал 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.