【发布时间】: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