AWS Lambda – 奇怪的堆栈跟踪
我们正在用node.js 4.3
编写AWS
lambda函数,但是我们遇到了抛出错误的奇怪behaviour
。
第一:
'use strict'; exports.handler = function(event, context, callback) { throw new Error(); };
这是像预期的抛出:
at exports.handler (/var/task/TestCode.js:4:11)
但是,如果我们添加一个函数(即使是未调用的),它调用一个不同的类/ obj的函数,其中包含一个带有obj的lambdaexpression式,我们得到一个神秘的投掷信息。 为了让事情更容易理解,下面是一些代码:
'use strict'; function aRandomFunction() { something.foo((obj) => {}); } exports.handler = function(event, context, callback) { throw new Error(); };
现在我们得到一个日志,我们不明白为什么:
at something.foo.exports.handler (/var/task/TestCode.js:8:11)
有人可以解释我为什么会发生? 这似乎是一些JS
魔法,我不明白:)
谢谢
修订答案 – 升级到v6.1
您的问题是节点版本4.3。 升级到6.1将解决问题。
我重新创build了您提供的代码片段,并在两种环境中运行它。 以下错误分别给出了两种情况。
-
4.3
-
at something.foo.module.exports.test (/var/task/handler.js:56:10)
- 意外的结果。
-
-
6.1
-
at module.exports.test (/var/task/handler.js:56:10)
- 这将是预期的结果。
-
原始答案 – polyfill
你的问题是你的箭头函数在错误消息中引用的行…
'use strict'; function aRandomFunction() { something.foo((obj) => {}); // illegal arrow function (ES6 not supported in Lambda environment by default) } exports.handler = function(event, context, callback) { throw new Error(); };