POST 请求失败,没有错误消息 (Parse.com / ExpressJS)

POST request fails with no error message (Parse.com / ExpressJS)

本文关键字:com Parse ExpressJS 消息 失败 请求 有错误 POST      更新时间:2023-09-26

我遇到了一个问题,即我发出的 POST 请求失败,错误代码为 500,并且我的服务器端错误日志中没有打印任何内容。就好像云方法不存在一样。

奇怪的是,相同的 POST 请求在较小的文件中表现良好。当文件达到大约 1.4 MB 时,它开始失败。我尝试更改 express.bodyParser 的 limit 参数,例如"app.use(express.bodyParser( { limit: 10000000 } ));",但这没有区别。

下面是一些代码:

function uploadFile(pageState)
{
    var reader = new FileReader();
    reader.onload = function()
    {
        var data = reader.result;
        var byteArrayObj = new Uint8Array(data);
        var byteArray = new Array(byteArrayObj.length);
        for(i=0; i<byteArray.length; i++) {
            byteArray[i] = byteArrayObj[i];
        }
        var json = { data: byteArray };
        var jsonString = JSON.stringify(json);
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST", "/assetUploader/"+pageState.assetIdentifier+"/"+pageState.fileName+"/"+pageState.isAssetBundle+"/"+pageState.uploadToProduction, true);
        xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xmlhttp.onload = function(evt) {
            ...
        };
        xmlhttp.send(jsonString);
    };
    reader.readAsArrayBuffer( pageState.fileRef );
}

在云端:

app.post('/assetUploader/:fileIdentifier/:fileName/:isAssetBundle/:useProd', function(req, res)
{
    console.log("assetUpload Post");
    var fileId = req.params.fileIdentifier;
    var fileName = req.params.fileName;
    var assetBundle = req.params.isAssetBundle  == "true";
    var bytes = req.body.data;
    var useProd = req.params.useProd == "true";
    createParseFile(fileName, bytes, useProd).then( function(response) {
        return currentVersionForAsset(fileId, useProd).then(function(versionNumber) {
            return {
                "fileIdentifier": fileId,
                "file": {
                        "name": response.data.name,
                    "__type": "File"
                    },
                "isAssetBundle": assetBundle,
                "fileVersion": versionNumber+1
            };
        });
    }).then(function(json) {
        return createParseObject("DownloadableAsset", json, useProd);
    }).then( function() {
            res.send(200);
        }, function(error) {
        res.send(400, error.message);
    });
});

任何帮助或建议将不胜感激。谢谢你的时间!

我建议将res.setTimeout与大量的milisecs一起使用。 也许您的响应只是超时,并且根据我的经验,节点在发生时不会抛出错误。