0
我在ubuntu 14.04.1上使用node.js v0.10.32,尝试并使用aws-sdk(2.0.18)上传(并下载)一个来自S3的文件。但上传大文件时出现以下错误,例如32MB。Node.js AWS S3 [RangeError:超出最大调用堆栈大小]
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
...
(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
我试图使堆栈大小更大node --stack-size=16384 ...
但没有运气。 这是我上传的源代码:
if (process.argv.length < 7) {
console.log ("usage: " + process.argv [0] + " " + process.argv[1] + " <config> <region> <bucket> <key> <file>")
return -1
}
var config = process.argv[2]
var region = process.argv[3]
var bucketName = process.argv[4]
var key = process.argv[5]
var file = process.argv[6]
var fs = require ('fs')
var aws = require ('aws-sdk')
fs.readFile (config, "utf8", function (err, configFile) {
if (err) {
console.log ("Config file cannot be read: ", err)
return -1
}
aws.config = JSON.parse (configFile)
aws.config.region = region
var bucket = new aws.S3 ({params: {Bucket: bucketName}})
fs.readFile (file, function (err, fileData) {
if (err) {
console.log ("Cannot open file for uploading: ", err);
} else {
bucket.createBucket (function() {
var data = {Key: key, Body: fileData}
bucket.putObject (data, function (err, data) {
if (err) {
console.log ("Error uploading data: ", err);
} else {
console.log ("Successfully uploaded!");
}
})
})
}
})
})
我不知道,现在,请大家帮忙。 也许aws的分段上传是上传大文件的解决方案?
您可能会在[此问题]上发表您的意见(https://github.com/aws/aws-sdk-js/issues/158)。另外,为了上传文件,你可以尝试类似['s3-upload-stream'](https://github.com/nathanpeck/s3-upload-stream),这样你就不必将整个文件加载到内存上传它。 – mscdex 2014-10-08 11:32:21