NodeJs断言在HTTP调用(Mac)上失败

时间:2016-11-30 15:27:18

标签: javascript node.js macos amazon-dynamodb aws-lambda

var client = require('http');
var endpoint = apiEndpoint;
var request = client.get(endpoint, function(responseFromApi) {
            var responseString = '';
            responseFromApi.setEncoding('utf-8');
            responseFromApi.on('data', function(data) {
                responseString += data;
            });

            // To reformat the string response into Json...
            responseFromApi.on('end', function() {
                var jsonResponse = JSON.parse(responseString);
                callback(jsonResponse);
            });
        });

我正在使用上面的方法进行API调用,但是在随机实例上,由于Assertion失败,我的调用失败,如下所示。任何人都知道如何解决这个问题?

Assertion failed: (handle->type == UV_TCP || handle->type == UV_TTY || handle->type == UV_NAMED_PIPE), function uv___stream_fd, file ../deps/uv/src/unix/stream.c, line 1568.

环境:Mac,Nodejs

注意:我在AWS lambda服务器上测试了相同的代码,但从未遇到过这个问题。我猜这是一个仅限Mac的实例。谷歌勋爵告诉我,这是一个Mac desync问题。

如果尝试使用以下代码从位于Amazon服务器上的dynamoDB获取数据,情况也是如此......

 // To get userID.
            var userId = getUserIdFromContext(this);
            if (!userId) {
                callback('userId is not set.');
            } 

            // To get table name.
            var table = constants.dynamoDBTableName;
            if(!table) {
                callback('DynamoDB Table name is not set.');
            }

            // To set the DocumentClient.
            if(!doc) {
                doc = new aws.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
            }

            // To set the params.
            var params = {
                Key: {
                    CustomerId: userId
                },
                TableName: table,
                ConsistentRead: true
            };

            // To get data from table.
            var skillContext = this;
            doc.get(params, function(err, data){
                if(err) {
                    console.log('get error: ' + JSON.stringify(err, null, 4));
                    callback(err);
                } else {
                    if(isEmptyObject(data)) {
                        callback('The object is empty.');
                    } else {
                        var userData = JSON.parse(data.Item['Data']);
                        extractUserData(skillContext, userData, callback);
                    }
                }
            });
        }

0 个答案:

没有答案