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