Итак, я загрузил этот слой в AWS, используя Serverless Framework:
service: webstorm-layer
provider:
name: aws
runtime: nodejs8.10
region: us-east-1
layers:
nodejs:
path: nodejs # path to contents on disk
name: node-webstormlibs # optional, Deployed Lambda layer name
description: JS shared libs for node
compatibleRuntimes:
- nodejs8.10
allowedAccounts:
- '*'
Нужные мне библиотеки находятся в каталоге "nodejs", там лежит мой файл packages.json и все каталоги "node_modules",Пока все выглядит хорошо, но когда я пытаюсь запустить лямбду, которая использует слой "node-webstormlibs", я получаю сообщение:
"errorMessage": "Cannot find module 'pg'",
Модуль pg фактически существует в zip-файле, которыйсоздает слой.Затем у меня есть сомнения по поводу того, как импортировать модуль, который находится внутри слоя.В некоторых уроках я вижу:
import pg from "pg";
как всегда, но в других я вижу:
import pg from "/opt/pg";
или даже:
import pg from "/opt/nodejs/node_modules/pg";
Я не знаюесли опция "path:" в моем serverless.yml верна, хотя.
На сервере путь:
NODE_PATH=/opt/nodejs/node8/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules
ОБНОВЛЕНИЕ
Поместив все в dir / nodejs / node8, сделал свое дело.