首页 > 解决方案 > 在 aws 控制台中将事件主体解析为 json 时出错

问题描述

我将 lambda 与 aws 和无服务器框架一起使用。当我用无服务器离线测试它时,它工作得很好,但是当我部署它时,我不断收到一条消息:内部服务器错误,当我登录到 aws 控制台时,错误说

  "errorType": "SyntaxError",
  "errorMessage": "Unexpected token p in JSON at position 0",
  "trace": [
    "SyntaxError: Unexpected token p in JSON at position 0",
    "    at JSON.parse (<anonymous>)",
    "    at module.exports.createPost (/var/task/handlers/post.js:17:12)",
    "    at Runtime.handler (/var/task/serverless_sdk/index.js:9:89602)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
  ]

这是我的处理程序

module.exports.createPost = async event => {
  const data = JSON.parse(event.body);
  const post = {
    id: uuid.v4(),
    createdAt: new Date().toISOString(),
    userId: 1,
    title: data.title,
    body: data.body
  };
  const params = {
    TableName: postsTable,
    Item: post
  };
  db.putItem(params, (err, data) => {
    if (err) {
      return response(err.statusCode, err);
    } else {
      return response(200, post);
    }
  });
};

我正在测试这个

{
  "title": "post title",
  "body": "post body"
}

标签: node.jsamazon-web-servicesaws-lambdaserverless-framework

解决方案


我猜body已经是一个json,所以如果你再做json.parse一次,它会抛出这个错误。如果你删除json.parse,它应该没问题。


推荐阅读