Node.js - isInteger在返回true时返回false

时间:2016-11-07 19:42:24

标签: javascript node.js

直截了当,我已经得到了这段代码:

//SERVERSIDE
newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
    if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
    {
        //FURTHER VALIDATION...
    }
}

//CLIENTSIDE
socket.emit("connectOrb", parseInt(selectedOrbElement.attr("cid")), parseInt(clickedOrbElement.attr("cid")));

当我检查connectingOrbIdtargetOrbId是否是localhost上的整数时,一切正常,两个条件都返回true并且算法继续,但是当我在OpenShift上托管这个应用程序并尝试完全相同时事情,然后我无法通过此验证,可能是什么问题?

顺便说一下,当我console.log(connectingOrbId)console.log(targetOrbId)时,我会得到我应该得到的数字(所以它不是undefined)。

编辑:

所以我稍微调整了服务器端代码,但我仍然得到相同的结果:

newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
    connectingOrbId = parseInt(connectingOrbId);
    targetOrbId = parseInt(targetOrbId);

    if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
    {
        //FURTHER VALIDATION...
    }
}

EDIT2:

由于Rafael问我已经检查了这些变量的类型,所以现在代码看起来像这样:

newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
    connectingOrbId = parseInt(connectingOrbId);
    targetOrbId = parseInt(targetOrbId);

    console.log("Connecting: "+typeof connectingOrbId);
    console.log("Target: "+typeof targetOrbId);

    if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
    {
        //FURTHER VALIDATION...
    }
}

并且控制台批准这两个都是数字类型变量。

编辑3:

因此,迈克帮我发现我在OpenShift上有一个旧的node.js版本,在本地有一个新版本,更新旧版本解决了这个问题。

0 个答案:

没有答案