解析SDK JavaScript与Node.js ENOTFOUND

前端之家收集整理的这篇文章主要介绍了解析SDK JavaScript与Node.js ENOTFOUND前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想在Parse中获取大量的数据,我发现一个很好的解决方案是做一个递归的函数:当数据成功发现时,启动另一个请求.我这样做的方式很简单:
var containedLimit = 1000,// Also tried with 500,300,and 100
    parseUsersWaiting = {
        // A lot of Users
    },parseUsers = {},// Recipt for Users
    getPlayers = function (containedIn) {        
        var count = 0;

        if (containedIn == undefined) {
            containedIn = [];

            for (var i in parseUsersWaiting) {
                count++;
                if (count > containedLimit) {
                    break;
                }

                containedIn.push(parseUsersWaiting[i].id);
                delete parseUsersWaiting[i];
            }
        }

        var UserObject = Parse.Object.extend('User'),UserQuery = new Parse.Query(UserObject);

        UserQuery.limit(containedLimit);

        UserQuery.containedIn('objectId',containedIn);
        UserQuery.find({
            success: function (results) {
                if (results) {
                    for (var i in results) {
                        if (parseUsers[results[i].id] == undefined) {
                            parseUsers[results[i].id] = results[i];
                        }

                        // Other stuff

                        if (results.length < containedLimit) {
                            // End of process
                        } else {
                            getPlayers();
                        }
                    }
                } else {
                    // Looks like an end of process too
                }
            },error: function (error) {
                console.log(error.message);
                getPlayers(containedIn);
            }
        });
    };

现在,这里是我想称之为“问题”的事情:它经常发生,这个“错误”回调是这样启动的:

Received an error with invalid JSON from Parse: Error: getaddrinfo ENOTFOUND api.parse.com
at errnoException (dns.js:44:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:94:26)

(当然,使用代码107)所以我在Parse文档中搜索,它说完全相同的事情:“收到一个无效的JSON错误”.是啊.

我使用Parse.com提供的Parse SDK(npm安装解析)

我还尝试修改一下Parse代码,将文件parse / node_modules / xmlhttprequest / lib / XMLHttpRequest.js(Parse包版本:1.5.0)的第361行的主机名替换为主机名,而不是’工作,所以我删除了我的变化.

(顺便提一下,我发现一个解决方案是关于使用ulimit来改变可以解决问题的内存使用限制,但实际上我没有必要的权限来执行这个命令)

解决方法

当无法连接到API(技术上无法查找API服务器的IP地址)时,会发生此错误.也许您的互联网连接已经丢失了一段时间,或者他们的SDK服务器不可用(或者服务器由于速率限制而拒绝您的请求).

无论哪种方式,将一些弹性编入应用程序是很好的.我看到你的错误功能重试API调用,但也许值得添加一个超时,然后再这样做,让问题有机会恢复?

error: function (error) {
        console.log(error.message);
        setTimeout(getPlayers,10000,containedIn);
    }

如果服务器是速率限制您的请求,这也将有所帮助.

猜你在找的JavaScript相关文章