Maximum call stack size exceeded]
I am using node.js v0.10.32 on ubuntu 14.04.1 and trying and use aws-sdk(2.0.18) to upload (and download) a file from S3. But the following error shows up when uploading a large file, say 32MB.
(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
I tried to make stack size larger with node --stack-size=16384 ... but no luck.
Here is my uploader source code:
if (process.argv.length < 7) {
console.log ("usage: " + process.argv [0] + " " + process.argv[1] + " ")
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!");
}
})
})
}
})
})
I am no idea now, please help.
Maybe aws’s multipart upload is the solution for uploading large files?
Read more here: Source link
