我有以下Lambda函数,我是按照PluralSight教程编写的[我对js知之甚少。这样做是为了学习API网关< - > Lambda教程]
我编写了完全相同的函数,只有{}
作为测试json:
var faker = require('faker');
exports.handler = function(event, context){
var inventory = [];
for(var i = 0; i < 10; i++){
var shoe = {};
var shoeType = getShoeType();
shoe.name = getShoeName(shoeType);
shoe.color = getShoeColor();
shoe.description = getShoeDescription(showType);
shoe.size = getShoeSize();
shoe.price = getShoePrice();
inventory.push(shoe);
}
context.succeed(inventory);
}
function getShoeName(showType){
return faker.company.catchPhraseNoun() + " " + faker.company.catchPhraseDescriptor() +
" " + showType;
}
function getShoeColor(){
return faker.commerce.color();
}
function getShoeDescription(shoeType){
return "A(n)" + faker.commerce.productAdjective() + ", " + faker.commerce.productAdjective() +
" " + shoeType + "made from the finest " + faker.commerce.productMaterial() + "designed for the " +
faker.commerce.bsBuzz() + " individual!";
}
function getShoeSize(){
return getNum(1, 13);
}
function getShoePrice(){
return faker.commerce.price();
}
function getShoeType(){
var shoeType = [
"running shoes",
"training shoes",
"tennis shoe",
"cricket shoe",
"other shoe"
]
return shoeType[getNum(0, 5)];
}
function getNum(min, max){
return Math.floor(Math.random() * (max - min +1)) + min;
}
然而,Lambda提出了这个错误:
{
"errorMessage": "RequestId: e5566a3c-1df8-11e7-8b71-d961323b4fcf Process exited before completing request"
}
我也检查了context.succeed()
的位置,而且完全没问题。
那么,我哪里出错?
答案 0 :(得分:1)
我看到的一个错误是getShoeName()
函数。此函数具有5种鞋类型的数组(数组索引0到4)。
但是由于您传递给随机数函数的参数,它返回0到5之间的值。因此当随机数函数返回5时,它会生成错误b / c show type array的最后一个元素是在索引4,而不是5。
编辑:在进一步审核时,这可能不会导致函数在完成请求之前退出...但您可能会看到&#34; undefined&#34;在showType
返回的字符串中。
编辑#2
另一个错误是您将未定义的变量shoeType
(而不是getShoeDescription()
)传递给<View style={styles.formContainer}>
<TouchableHighlight onPress={this.props.authentication}>
<Icon.Button name="facebook" style={styles.loginIconButton}>
<Text style={styles.loginButtonText}>Login with Facebook</Text>
</Icon.Button>
</TouchableHighlight>
</View>
函数。
没有看到发生的真正错误是我在使用AWS Lambda时遇到的令人沮丧的事情之一。我最终开始使用无服务器框架,它具有让你在本地运行Lamdba功能的好处 - 如果你这样做,你将得到更好的错误信息。