Невозможно использовать пакет NPM внутри AWS Lambda, require () broken - PullRequest
0 голосов
/ 16 декабря 2018

Я создал очень простой пакет NPM только с двумя файлами

index.js:

  module.exports = {
      errors: {
        HttpError: require('./src/errors').HttpError,
        test: 'value'
      }
    }

src / errors.js:

class HttpError extends Error {
  constructor (message, code) {
    super(message)
    this.statusCode = code

    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, HttpError)
    }
  }
}

exports.HttpError = HttpError

КогдаЯ устанавливаю этот пакет, я могу использовать свой класс ошибок без проблем.Однако, когда я создаю пакет развертывания с помощью Serverless и пытаюсь запустить код как часть лямбды AWS, лямбда, похоже, не может разрешить класс HttpError.

В моей функции лямбда, работающей на AWSКогда я запрашивал пакет как const и выходил из него, журнал выглядит так:

{"errors":{"test":"value"}}

, тогда как локально это выглядит так:

{ errors:
   { HttpError: [Function: HttpError],
     test: 'value' } }

Я скачал пакет развертыванияот AWS и может подтвердить, что это выглядит точно так же, как локальная версия.Я не могу найти ничего в лямбда-документах, которые подразумевают, что я не могу использовать require для модулей javascript.Что я делаю не так?

1 Ответ

0 голосов
/ 16 декабря 2018

Я нашел ошибку, и она была полностью моей собственной, сделав две отдельные ошибки одновременно.

Я проверял, является ли мой package-name.errors.HttpError экземпляром идентичного класса HttpError, который я определил в коде, устанавливающем пакет, что, конечно, не так.Это привело меня к выходу из функции require (), однако для этого я использовал JSON.stringify (), который, конечно, будет пропускать функции.Таким образом, я полагал, что каким-то образом мой require () внутри пакета не был решен правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...