【问题标题】:AWS Lambda with Winston logger throws Runtime.ImportModuleError带有 Winston 记录器的 AWS Lambda 抛出 Runtime.ImportModuleError
【发布时间】:2020-05-07 12:58:02
【问题描述】:

我正在尝试在 AWS Lambda 中实现 Winston 记录器(版本 3.2.1)。在此comment 之后,我有此代码:

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)"
  ]
}

查看不同的模块,我发现“colors”模块需要“has-flag”,这实际上是“winston”的依赖项。

【问题讨论】:

  • 您是否将所有依赖项压缩到您上传到 Lambda 的部署包中?
  • 不,我上传了一个包含 Rollup 生成的包的 zip(使用 'rollup-plugin-node-resolve')。
  • 我终于解决了更改汇总配置的这个错误。谢谢。
  • github.com/winstonjs/winston/issues/1607 反正我也不能捆绑温斯顿

标签: node.js amazon-web-services aws-lambda winston


【解决方案1】:

请注意 Bunyan 日志库与 Rollup 配合得很好,我已经能够创建 AWS Lambda 捆绑包并成功测试了日志记录。

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2022-11-04
    • 2018-11-18
    • 2019-10-26
    • 1970-01-01
    • 2018-12-08
    • 2019-11-21
    • 2021-07-21
    • 2020-10-14
    相关资源
    最近更新 更多