Serverless framework: All of a sudden receiving "ERROR TypeError: e is not a function" after deployment of service

Serverless framework: All of a sudden receiving "ERROR TypeError: e is not a function" after deployment of service

亲爱的 Whosebug 社区,

我正在使用无服务器框架将我的 JS 服务部署到 AWS。它始终运行良好,但从今天开始,在对我的一个函数的代码进行了一些更改后,我在调用服务中的任何函数时收到以下错误:

ERROR   TypeError: e is not a function
    at Runtime.handler (/var/task/serverless_sdk/index.js:9:137343)
    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)

我不明白这是从哪里来的。我根本没有更改 serverless.yml,也没有更改功能代码的任何基础知识(只是 SQL 语句中的一个小改动,与 JavaScript 代码无关根本)。我已阅读以下问题 ,但那里没有描述适合我的情况。

更多上下文信息:

有没有人突然知道这可能是从哪里来的?

编辑 1:我也已经升级了无服务器框架 - 没有帮助

编辑 2:奇怪的是,这个问题是在我没有更改任何代码的情况下突然发生的——这就是为什么我不认为发布任何代码会有帮助。现在,我在要部署的其他服务中也遇到了这个问题。我无法再部署任何功能。一旦我部署了以前没有问题的单个功能或完整服务,问题也会在那里出现。 @PatrykMilewski:我检查了 Lambda 控制台,我意识到在部署之后,包含我的函数 ("function.js") 的文件是空的,而对于之前部署的服务,该文件不是空的。我认为这可能是错误消息的原因。这可能是无服务器框架中的错误引起的吗?

编辑 3:我只记得我最近将 Mac OS 升级到最新版本,包括新的 XCode 命令行工具 v13。从时间的角度来看,这可能与弹出的问题一致 - 这可能与问题有关吗?

编辑 4:更多环境信息:

来自我的操作系统:

ProductName:    macOS
ProductVersion: 11.6
BuildVersion:   20G165

从无服务器控制台输出:

Operating System:          darwin
Node Version:              16.10.0
Framework Version:         2.10.0 (local)
Plugin Version:            4.1.1
SDK Version:               2.3.2
Components Version:        3.3.0

在无服务器团队的大力支持下,我解决了这个问题。问题的原因实际上是我不知道的过时的无服务器版本。通常我使用 yarn upgrade 来定期升级我所有的包。但在这种情况下,有一个依赖项迫使无服务器停留在过时的版本上。只有在使用 yarn upgrade serverless@2.61.0 主动强制 serverless 升级到最新版本然后再次调用 yarn upgrade 以基于新的 serverless 版本制作依赖包之后,我才能升级 serverless 及其依赖项.之后,我再次部署了我的服务,在远程调用我的函数时,上述错误消失了。

我希望这也能帮助遇到此问题的其他人。