0

ubuntuでノードサーバーを実行しています。nodejs でドロップボックス モジュールを使用しています。( https://www.npmjs.com/package/dropbox )

node -v = v0.10.38

npm -v = 1.4.28

( https://github.com/danialfarid/ng-file-upload ) ライブラリを使用してファイルをアップロードするために、フロントエンドで angularjs を使用しています。25MB 未満の小さなファイルのアップロードは正常に機能します。サーバーへのアップロードとドロップボックスへのアップロードです。しかし、(50mb)のように大きい場合はファイルします。エラーを出しています。

(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.

RangeError: Maximum call stack size exceeded.

ここに私が使用している関連コードがあります:

var client = new Dropbox.Client({
    "key": "XXXXXXXXXXX",
    "secret": "XXXXXXXXXXXX",
    "token": "XXXXXXXXXXXXXXXXXXx",
    "uid": "XXXX"
});
    app.all('/test', function (req, res) {
        console.log(req.files); 
        var f = req.files.file;
        var dbx_file_stat;
        var short_url;
        var new_file_name = 'generate file name';
        fs.readFile(f.path, function (error, data) {
            if (error) {
                console.log('read error');
                return console.log(error);
            }
            client.writeFile(new_file_name, data, function (error, stat) {
                if (error) {
                    console.log('write error');
                    return console.log(error);
                }
                //stopReportingProgress();
                client.makeUrl(new_file_name, {downloadHack:true},function (error,url) {
                        if (error) {
                        return console.log(error);
                    }                                       
                    res.send("it works");                             
                });
            });
        });
    })

大きなファイルがサーバーにアップロードされていますが、ドロップボックス サーバーにアップロードできません。私はいくつかの調査を行いました。使用することを提案した人もいます ( https://nodejs.org/api/timers.html#timers_setimmediate_callback_arg )。しかし、実装方法。この問題の原因は何ですか? また node --stack-size=320000 app.js 、この後に新しいエラーが発生しました。

(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
Segmentation fault
4

1 に答える 1

0

次のコードと 75 MB のファイルを使用しても、エラーを再現できません。おそらく、問題はアプリの他の部分に関連しています。(Express を使用しているように見えますか?)

var fs = require('fs'),
    dropbox = require('dropbox');

var client = new dropbox.Client({ token: "REDACTED" });

fs.readFile('testfile', function (error, data) {
    client.writeFile('testfile', data, function (error, stat) {
        if (error) {
            console.log('ERROR: ' + error);
        } else {
            console.log(stat);
        }
    });
});

それでもエラーを再現できる場合は、より小さな再現を共有してください。

于 2015-05-27T22:49:22.847 に答える