AWS Lambda Cryptic Node.js 错误:发生未知应用程序错误

Posted

技术标签:

【中文标题】AWS Lambda Cryptic Node.js 错误:发生未知应用程序错误【英文标题】:AWS Lambda Cryptic Node.js error: Unknown application error occurred 【发布时间】:2020-05-12 21:55:40 【问题描述】:

我最近将我的 lambda Node.js 运行时从 8.x 更新到了 12.x。我升级了许多依赖项并优化了与 webpack 的捆绑和部署过程。 但是,我开始注意到 Cloudwatch 中的零星错误,其中包含一条神秘消息“发生未知应用程序错误”,没有堆栈跟踪或任何其他可以为我提供有关函数输入的上下文的日志。 我没有办法调试这段代码,而且它似乎是一个原生AWS错误,由于某种原因甚至无法调用该函数,否则日志中会附加一个JS堆栈跟踪......

我开始认为存在 Webpack 问题,但我什至禁用了缩小过程,所以我不知道去哪里找。

我的代码是 100% 使用 Webpack 和 Babel 编译的 Typescript。我是否应该尝试从构建过程中删除 Webpack,只使用普通的 node_modules 文件夹压缩 Typescript 编译器输出而不进行任何捆绑?

有人可以帮我吗?此功能正在生产中!

编辑:我看到了一堆警告,如 DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.,我知道,但这不应该是这个神秘错误的原因。

【问题讨论】:

这能回答你的问题吗? Lambda code works on node v8.10 but not nodejs v10.x 不,这不是同一个错误。我没有与之关联的堆栈跟踪。 您找到解决方案了吗? 在一些代码重构之后它确实消失了。从来没有新的问题是什么 同样的问题......我们的应用程序是用没有 webpack 的 typescript 编写的,所以我不认为 webpack 是这里的问题 【参考方案1】:

我最近遇到了这个错误,但我的错误每隔一个请求都会发生。第一个请求我得到了很好的响应,第二个(相同的)请求,我得到了错误“发生了未知的应用程序错误”。

我使用的是 NodeJS mysql2 模块,并且在每次请求后都没有正确关闭池连接,这迫使第二个请求失败,然后 NodeJS 重置并且以下请求再次正常。

【讨论】:

以上是关于AWS Lambda Cryptic Node.js 错误:发生未知应用程序错误的主要内容,如果未能解决你的问题,请参考以下文章

[AWS Lambda] Scheduling Events with AWS Lambda (a.k.a. Lambda cron jobs)

AWS lambda 和 AWS Lambda@EDGE 有啥区别?

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs

pymssql 包不适用于 aws 中的 lambda

如何在 AWS Lambda 中运行 AWS SDK Opsworks 命令?