AWS Лямбда с регистратором Winston выдает Runtime.ImportModuleError - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь реализовать регистратор Winston (версия 3.2.1) внутри AWS Lambda. После этого комментария У меня есть этот код:

const winston = require('winston');

const waitForLogger = async (logger) => {
  const loggerDone = new Promise((resolve) => logger.on('finish', resolve));
  logger.end();
  return loggerDone;
};

exports.handler = async (event) => {
  const logger = winston.createLogger({
    transports: [
      new winston.transports.Console(),
    ],
  });
  logger.log('info', 'some message');
  await waitForLogger(logger);

  return {
    statusCode: 200,
    body: 'test passed',
  };
};

Но после генерации сборки с использованием Rollup и развертывания функции с помощью Terraform и тестирования ее на консоли AWS я получаю эту ошибку:

{
  "errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module './has-flag.js'",
  "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module './has-flag.js'",
    "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
    "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
    "    at Object.<anonymous> (/var/runtime/index.js:45:30)",
    "    at Module._compile (internal/modules/cjs/loader.js:778:30)",
    "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)",
    "    at Module.load (internal/modules/cjs/loader.js:653:32)",
    "    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
    "    at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
    "    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)",
    "    at startup (internal/bootstrap/node.js:283:19)"
  ]
}

Глядя на различные модули, я обнаружил, что модуль hass требует 'has-flag', который фактически является зависимостью от 'winston'.

1 Ответ

0 голосов
/ 22 января 2020

Просто обратите внимание, что Библиотека журналов Bunyan хорошо работает с Rollup, и мне удалось создать AWS Lambda-комплект и успешно протестировать регистрацию.

...