使用
运行 Lambda 测试{
"var1": "2017-04-17T18:48:03.608Z",
"var2": "0.45",
"var3": "0.5"
}
功能:
exports.handler = (event, context, callback) => {
console.log("event.body = " + event.body);
const {var1, var2, var3} = JSON.parse(event.body);
const tmpItem = {
"var_1": var1,
"var_2": var2,
"var_3": var3
};
console.log('Inserting item');
}
给出以下异常:
请求编号: “3aa87175-d544-11e8-ab0a-2b268a563fb1”
函数日志:
START RequestId: 3aa87175-d544-11e8-ab0a-2b268a563fb1 Version: $LATEST
2018-10-21T15:16:05.617Z 3aa87175-d544-11e8-ab0a-2b268a563fb1 event.body = undefined
2018-10-21T15:16:05.636Z 3aa87175-d544-11e8-ab0a-2b268a563fb1 SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at exports.handler (/var/task/index.js:18:89)
END RequestId: 3aa87175-d544-11e8-ab0a-2b268a563fb1
REPORT RequestId: 3aa87175-d544-11e8-ab0a-2b268a563fb1 Duration: 82.98 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 25 MB
RequestId: 3aa87175-d544-11e8-ab0a-2b268a563fb1 Process exited before completing request
似乎是什么问题?
最佳答案
这是因为当你用数据包测试你的 lambda 时,比如说
{
"var1": "2017-04-17T18:48:03.608Z",
"var2": "0.45",
"var3": "0.5"
}
然后该数据包作为事件
传递给处理程序。
但是,你正在做 JSON.parse(event.body)
,但是对于上面的数据包,event.body
是 undefined
(在位置 0 处有标记 u
。
您应该将测试包更改为:
{
"body": "{\"var1\":\"2017-04-17T18:48:03.608Z\",\"var2\":\"0.45\",\"var3\":\"0.5\"}"
}
请注意,正文是字符串化的 JSON,因为 API Gateway Lambdas 需要字符串化格式的事件正文。
关于node.js - 获取语法错误 : Unexpected token u in JSON at position 0 when running Lambda Test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52914537/