Безсерверный автономный неопределенный модуль при загрузке из лямбда-слоя - PullRequest
4 голосов
/ 09 апреля 2019

У меня есть следующее дерево проекта

enter image description here

Где папка nodejs - это лямбда-слой, определенный в следующем serverless.yaml

service: aws-nodejs # NOTE: update this with your service name


provider:
  name: aws
  runtime: nodejs8.10
  stage: dev

plugins:
  - serverless-offline
layers:
  layer1:
    path: nodejs # required, path to layer contents on disk
    name: ${self:provider.stage}-layerName # optional, Deployed Lambda layer name

functions:
  hello:
    handler: handler.hello
    layers:
      - {Ref: Layer1LambdaLayer}
    events:
      - http:
          path: /dev
          method: get

Слой1 содержит только пакет UUID.

Поэтому, когда я пытаюсь запустить лямбду локально с помощью автономного подключаемого модуля без сервера, он говорит, что не может найти модуль UUID.

Но когда я развертываюкод для AWS, он работает как шарм.

Каким образом мы можем заставить лямбда-слои работать локально для целей тестирования?и для ускорения разработки?

Или есть ли способ, которым я могу динамически установить путь node_module, чтобы он указывал на папку слоя во время разработки, и как только мне нужно перейти к производству, он изменит путь кправильный

1 Ответ

4 голосов
/ 10 апреля 2019

Хорошо, после многих испытаний я разобрался с рабочим решением

Я добавил команду npm run, которая экспортирует временный путь node_module в список путей

"scripts": {
    "offline": "export NODE_PATH=\"${PWD}/nodejs/node_modules\" && serverless offline"
  },

Итак, узел может искать узлы модулей внутри подпапок

...