node.js - TypeError : i 不是函数(用 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", (got 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 的层。
禁用自动跟踪有助于避免出现此错误。
推荐阅读
- python - 如何更改熊猫数据框图的 x 轴上显示的值的数量?
- typescript - vscode 内置命令:“vscode.executeDocumentSymbolProvider”命令不返回文档中的所有符号
- python - 如何摆脱蓝色阴影?
- symfony - 如何从控制器在后台执行 Symfony 命令
- python - python lambda如何处理未声明的符号?
- java - 有没有办法获得类来的jdk版本
- python - 如何在 Google Colab 中使用 cv2.ellipse?
- javascript - 使用 Webpack 和 Babel 在网站上部署应用程序时出错(显示空白页)
- php - 为什么缺少 $_SERVER['ORIG_PATH_INFO']?
- c - 维度列表中的短语“变化最快”是什么意思?