Безсерверный, нод и хумус. Компиляция двоичного файла не работает

Я пытаюсь использовать 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.

Другие вопросы по тегам