如何处理Node.js的responseText?

时间:2017-09-21 01:20:44

标签: node.js amazon-web-services aws-lambda aws-api-gateway

我有一个javascript函数,如下所示我在S3

托管它
function myFunction() {

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
    if(this.readyState == 4 && this.status == 200){
        document.getElementById("testing").innerHTML = this.responseText;
    }
};
xhttp.open("GET","https://id.execute-api.ap-southeast-1.amazonaws.com/prod/lambdafunction", true);
xhttp.send();

}

lambdafunction写在Node.js中,如下所示

'use strict';

console.log('Loading function');

exports.handler = (event, context, callback) => {

let response = {
    statusCode: '200',
    body: JSON.stringify({ error: 'you messed up!' }),
    headers: {
        'Content-Type': 'application/json',
    }
};
context.succeed(response);
//callback(null, context);  // Echo back the first key value
//callback('Something went wrong');
};

我的期望是,带有id测试的div将被error: 'you messed up!取代,但什么都没发生?我可以知道哪个部分可能出错了吗?

1 个答案:

答案 0 :(得分:1)

看起来您正在使用api(非常)旧节点v.0.10.42。

您似乎更有可能使用新版本,因此您应该:

callback(null, JSON.stringify({ error: 'you messed up!' })); 
// if you are not using proxy integration

callback(null, response)
// if you set up the function with proxy integration

如果这没有帮助,那么在您直接访问网址时以及在AWS日志中看到任何内容时,了解您获得的内容会很有用。您还应该能够直接从AWS控制台调用lambda函数,这使得测试更容易。