获取SyntaxError:运行Lambda测试时,JSON意外标记u在位置0处

use*_*174 4 amazon-web-services node.js aws-lambda

使用运行Lambda测试

{
  "var1": "2017-04-17T18:48:03.608Z",
  "var2": "0.45",
  "var3": "0.5"
}
Run Code Online (Sandbox Code Playgroud)

功能:

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');
}
Run Code Online (Sandbox Code Playgroud)

给出以下异常:

请求ID:“ 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
Run Code Online (Sandbox Code Playgroud)

似乎是什么问题?

Ayu*_*pta 6

这是因为当您使用数据包测试lambda时,说

{
  "var1": "2017-04-17T18:48:03.608Z",
  "var2": "0.45",
  "var3": "0.5"
}
Run Code Online (Sandbox Code Playgroud)

然后将该数据包作为传递event给处理程序。

但是,您正在执行JSON.parse(event.body),但是对于上述数据包,event.bodyundefinedu在位置0 具有令牌)。

您应该将测试包更改为:

{
    "body": "{\"var1\":\"2017-04-17T18:48:03.608Z\",\"var2\":\"0.45\",\"var3\":\"0.5\"}"
}
Run Code Online (Sandbox Code Playgroud)

请注意,主体是字符串化的JSON,因为API网关Lambda期望事件主体采用字符串化格式。

  • 根据您的回答,我收到“SyntaxError: Unexpected token o in JSON at position 1” (2认同)