Как использовать отдельный двоичный файл модуля .node в AWS Lambda - PullRequest
0 голосов
/ 25 сентября 2018

Я просто хочу использовать свой пользовательский двоичный модуль сборки, который представляет собой один файл index.node .Он находится в каталоге src / modules / my_module .Когда я пытаюсь использовать его в своей лямбда-функции

const myModule = require('src/modules/my_module')

, выдается ошибка, что

Ошибка: не удается найти модуль

Я даже пробовал какэто

const myModule = require('src/modules/my_module/index.node')

, тогда он выдает

Ошибка синтаксического разбора модуля

, но если я запускаю тот же код в node.js (без развертывания в awsлямбда) это работает.Как правильно загрузить файлы двоичного модуля node.js в AWS Lambda?

@ AironBrynchke

Просто повторите следующие шаги:

mkdir myprj 
cd myprj 
serverless create --template aws-nodejs-typescript && npm install 
cp /folder/with/your/index.node ./index.node 
nano handler.ts

затемзамените на это содержимое

import { APIGatewayEvent, Callback, Context, Handler } from 'aws-lambda';

export const hello: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {
  const myModule = require('./index.node');
  const response = {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Go Serverless Webpack (Typescript) v1.0! Your function executed successfully!',
      input: event,
    }),
  };

  cb(null, response);
}

, затем на последнем шаге

serverless deploy -v

вы увидите

ОШИБКА в ./index.node 1: 0 Сбой синтаксического анализа модуля: Неожиданный символ '' (1: 0) Вам может понадобиться соответствующий загрузчик для обработки этого типа файла.(Исходный код пропущен для этого двоичного файла) @ ./handler.ts 2: 21-44 @ multi ./source-map-install.js ./handler.ts

Я также пытался установитьзагрузчик узла для webpack

npm install node-loader --save-dev

, а затем добавьте в webpack.config.js

module: {
    rules: [
      // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
      { test: /\.tsx?$/, loader: 'ts-loader' },
      { use: 'node-loader'}
    ],
  },

после того, как я получил эту ошибку

ERROR in .../myprj/handler.ts(1,21) TS2339: Свойство 'dlopen' не существует для типа 'Процесс'.

...