我正在编写一个要使用 Node 8 部署到 AWS Lambda 的函数(它是 OSS,请查看: https://github.com/hacksecure/utility-serverless-functions )。它在本地(npm run dev
)上完美运行,但在部署(npm run deploy
)时,当我发出 GET 请求时,我得到的只是内部服务器错误。 Cloudwatch 日志除了显示请求开始、结束和计费规范的日志之外没有任何内容。该问题看起来与此类似,但将我的无服务器版本固定到 1.25.x(如您在 package.json 中看到的)没有任何作用。我没有全局安装无服务器,所以我知道不存在奇怪的版本冲突。
除了最简单的基于 Promise 的 lambda 函数之外,我找不到任何好的示例,因此我的代码很可能存在一些 serverless-offline 无法检测到的缺陷。我的最佳猜测是,此问题要么与我的本地 Node 版本(高于 AWS 使用的 Node 8 LTS)有关,要么与我的 AWS CloudFormation 堆栈中离线无法模拟的内容有关。由于我认为由较旧的 Node 版本引起的错误会记录一些内容,因此我认为该错误与涉及 API Gateway 的内容有关。这纯粹是猜测,我没有很好的方法来验证这一点。
最佳答案
问题在于,AWS 不会在响应上自动调用 JSON.stringify()
,但离线无服务器插件会自动调用。我仍然不确定为什么这会导致无日志错误,但它确实修复了它。
关于node.js - 为什么无服务器 Node 8 函数在本地可以运行,但在 AWS 上却失败且没有错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708598/