我在ubuntu上运行节点服务器。 我在nodejs中使用dropbox模块。(https://www.npmjs.com/package/dropbox)
node -v = v0.10.38
npm -v = 1.4.28
我在前端使用angularjs来使用(https://github.com/danialfarid/ng-file-upload)库上传文件。 上传小文件< 25mb工作正常。它正在上传到服务器并上传到Dropbox。但是当文件大于(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");
});
});
});
})
大文件正在上传到服务器但无法在Dropbox服务器上传。
我做了一些研究。有人建议使用(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
答案 0 :(得分:0)
我无法使用以下代码和75MB文件重现您的错误。也许这个问题与您应用的其他部分有关。 (看起来你可能正在使用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);
}
});
});
如果您仍然能够重现错误,请分享一个较小的复制品。