如何解决TypeError:我不是函数用epsagon包装的AWS Lambda
当我将npm模块从9.6.0升级到11.5.x时,此错误在lambda上弹出。 我正在使用无服务器框架来开发和部署微服务。使用Epsagon包装器进行更好的监控。
过去3天来,我一直在努力解决此错误。任何帮助将不胜感激。
AWS lambda运行时:节点10.x
以下是一些npm软件包 “ serverless-webpack”:“ ^ 5.3.3”, “ terser-webpack-plugin”:“ ^ 4.1.0”, “ webpack”:“ ^ 4.44.1” “ epsagon”:“ ^ 1.82.0”, “ got”:“ ^ 11.6.0”,(有了9.0.6,就没有问题了)
虽然我无法粘贴整个代码段,但下面是一个代码段。如果我在简单的index.js文件中使用相同的代码并运行它,则无法重现此问题。
const { body } = await got(path,{
headers: { 'custom-key': customKey },responseType: 'json',method: 'POST',json: { ts: i1599227703000 },});
以下日志片段来自cloudWatch。
{
"errorType": "TypeError","errorMessage": "i is not a function","stack": [
"TypeError: i is not a function"," at ClientRequest.patchedCallback (/opt/nodejs/node_modules/epsagon/dist/bundle.js:1:60626)"," at Object.onceWrapper (events.js:286:20)"," at ClientRequest.emit (events.js:203:15)"," at ClientRequest.EventEmitter.emit (domain.js:448:20)"," at ClientRequest.e.emit.f [as emit] (/var/task/epsagon_handlers/abcdNameChanged-epsagon.js:2:1080726)"," at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:565:21)"," at HTTPParser.parserOnHeadersComplete (_http_common.js:111:17)"," at TLSSocket.socketOnData (_http_client.js:451:20)"," at TLSSocket.emit (events.js:198:13)"," at TLSSocket.EventEmitter.emit (domain.js:448:20)"
]
}
解决方法
最后我可以破解它。 如果我们通过epsagon webapp启用epsagon自动跟踪功能,则实际上会在该lambda上添加一个称为epsagon-node-layer的层。
禁用自动跟踪有助于避免出现此错误。
有关更多详细信息,请参阅:https://github.com/epsagon/epsagon-node/issues/295
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。