Я просто хочу использовать свой пользовательский двоичный модуль сборки, который представляет собой один файл 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' не существует для типа 'Процесс'.