繁体   English   中英

尝试将 JSON 字符串作为有效负载传递后,AWS Lambda 中出现意外令牌错误

[英]Unexpected token error in AWS Lambda after trying to pass in a JSON string as a payload

I'm brand new to AWS, and I'm trying to invoke a Lambda function (Node 10.x) from a webpage, passing a JSON string from fields in the webpage to the Lambda function to add to a Dynamo table. 我前面提到了 API,因为这是我第一次使用 AWS,我将在 Lambda 中做的就是在 Dynamo 和网页之间发送 JSON 字符串。 我从日志中得到的错误是:

{ "errorType": "SyntaxError", "errorMessage": "Unexpected token u in JSON at position 0", "stack": [ "SyntaxError: Unexpected token u in JSON at position 0", " at JSON.parse ()" , "在 Runtime.exports.handler (/var/task/index.js:5:30)", "在 Runtime.handleOnce (/var/runtime/Runtime.js:66:25)" ] }

这是我的网页 javascript:

var lambda = new AWS.Lambda();



function makeJSON(){

var userID = "";

var name = document.forms["characterForm"]["characterName"].value;

//alert(name);

//alert(typeof name);

var race = document.forms["characterForm"]["race"].value;

var playerClass = document.forms["characterForm"]["class"].value;

var strength = document.forms["characterForm"]["strength"].value;

var dexterity = document.forms["characterForm"]["dexterity"].value;

var constitution = document.forms["characterForm"]["constitution"].value;

var intelligence = document.forms["characterForm"]["intelligence"].value;

var wisdom = document.forms["characterForm"]["wisdom"].value;

var charisma = document.forms["characterForm"]["charisma"].value;



//alert(name + race + playerClass + strength, dexterity, constitution, intelligence, wisdom, charisma);


characterSheetObj = {userID: userID, name: name, race: race, class: playerClass, strength: strength, dexterity: dexterity, constitution: constitution, intelligence: intelligence, wisdom: wisdom, charisma: charisma}

characterSheetJSON = JSON.stringify(characterSheetObj);


alert(characterSheetJSON);


var myParams = {

FunctionName : 'addCharacterSheet',

InvocationType : 'RequestResponse',

LogType : 'None',



//Payload : '{"userID": userID, "name": name, "race": race, "class": playerClass, "strength": strength, "dexterity": dexterity, "constitution": constitution, "intelligence": intelligence, "wisdom": wisdom, "charisma" : charisma}'

Payload : characterSheetJSON

}


lambda.invoke(myParams, function(err, data){

//if it errors, prompts an error message

if (err) {

alert("Error");

prompt(err);

}

//otherwise puts up a message that it didnt error. the lambda function presently doesnt do anything

//in the future the lambda function should produce a json file for the JavaScript here to do something with

else {

alert("Invoked Lambda function without erroring!");

}

});


}

这是我在 lambda function 中的 Node 10.x 代码


const AWS = require('aws-sdk');

const db = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});

exports.handler = async (event) => {

// exports.handler = function(e, ctx, callback) {

var characterData = JSON.parse(event.body);

console.log(characterData);

alert(characterData);

let scanningParameters = {

TableName : 'characterTable',

Limit:100

};


db.scan(scanningParameters, function(err, data){

if(err){

callback(err,null);

}else{

callback(null,data);

}

});


const params = {

TableName : 'characterTable',

Item: {

name : 'Alan'

}


};


const userID = '12345';

params.Item.userID = userID;


return await db.put(characterData).promise();

};

我的 JSON 格式可能在某个地方出错,但我不确定在哪里。 任何指导将不胜感激!

您的 JSON 在此处无效

characterSheetObj = {userID: userID, name: name, race: race, class: playerClass, strength: strength, dexterity: dexterity, constitution: constitution, intelligence: intelligence, wisdom: wisdom, charisma: charisma}

用引号括起来的键""

意外的uundefined中的u 这意味着您需要通过文档 go 并找出您的event.body未定义的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM