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 代码无关根本)。我已阅读以下问题 ,但那里没有描述适合我的情况。
更多上下文信息:
- 我有一个微服务架构,其中多个服务通过无服务器框架单独部署
- 目前只有我的一个服务显示这个问题。首先,我只通过
sls deploy -f ...
部署了一个功能 - 部署后,针对该功能弹出了上述错误。然后,出于测试目的,我通过 sls deploy
再次部署了整个服务。现在,服务中的所有函数在被远程调用时(通过 sls invoke -f ...
或通过 API 调用函数时)都会引发上述错误。
- 通过
sls invoke local -f ...
在本地调用函数时不会发生错误。
- 我还尝试重新部署其他服务以确保它不是一般的无服务器问题 - 在重新部署其他服务后,可以毫无问题地调用该其他服务中的功能。这里不会出现错误。
- 我试图对两个 serverless.yml 文件以及不同服务的函数文件进行比较,只是为了确保我没有意外地包含一些输入错误,但一切看起来都很好。
有没有人突然知道这可能是从哪里来的?
编辑 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 及其依赖项.之后,我再次部署了我的服务,在远程调用我的函数时,上述错误消失了。
我希望这也能帮助遇到此问题的其他人。
亲爱的 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 代码无关根本)。我已阅读以下问题
更多上下文信息:
- 我有一个微服务架构,其中多个服务通过无服务器框架单独部署
- 目前只有我的一个服务显示这个问题。首先,我只通过
sls deploy -f ...
部署了一个功能 - 部署后,针对该功能弹出了上述错误。然后,出于测试目的,我通过sls deploy
再次部署了整个服务。现在,服务中的所有函数在被远程调用时(通过sls invoke -f ...
或通过 API 调用函数时)都会引发上述错误。 - 通过
sls invoke local -f ...
在本地调用函数时不会发生错误。 - 我还尝试重新部署其他服务以确保它不是一般的无服务器问题 - 在重新部署其他服务后,可以毫无问题地调用该其他服务中的功能。这里不会出现错误。
- 我试图对两个 serverless.yml 文件以及不同服务的函数文件进行比较,只是为了确保我没有意外地包含一些输入错误,但一切看起来都很好。
有没有人突然知道这可能是从哪里来的?
编辑 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 及其依赖项.之后,我再次部署了我的服务,在远程调用我的函数时,上述错误消失了。
我希望这也能帮助遇到此问题的其他人。