我想下载一个大约900MB的文件。实现此目的的代码如下所示:
function download(url){
return new Promise((resolve,reject) =>{
try{
request(url, function (error, response, body) {
if (error){
reject(error)
} else{
console.log('sucess')
}
}).pipe(fs.createWriteStream('./test.zip'))
.on('finish',() =>{
resolve(promObj);
})
} catch (error){
reject(error);
}
})
}
最后,我收到以下错误:
buffer.js:556
if (encoding === undefined) return buf.utf8Slice(start, end);
^
Error: "toString()" failed
经过一番研究后,我发现节点缓冲区的大小限制为256MB。
有可能解决这个问题吗?
答案 0 :(得分:0)
缓冲区大小限制为2GB:
require("buffer").kMaxLength
2147483647
256MB是字符串
的限制尝试:
request(url).pipe(fs.createWriteStream('./test.zip'))
----编辑----
request(url).pipe(fs.createWriteStream('./test.zip')).on('finish',() =>{
// your callback here
})