Javascript NodeJs在外部数据请求时内存不足
我正在使用Axios在后端执行大型数据提取:Javascript NodeJs在外部数据请求时内存不足,javascript,node.js,axios,Javascript,Node.js,Axios,我正在使用Axios在后端执行大型数据提取: await Axios({ method: 'GET', url, headers: { 'content-type': 'application/json', Authorization: `Bearer ${forgeAccessToken}`, }, }); NodeJS崩溃了。内存问题: 1|rest-backenq | FATAL ERROR:
await Axios({
method: 'GET',
url,
headers: {
'content-type': 'application/json',
Authorization: `Bearer ${forgeAccessToken}`,
},
});
NodeJS崩溃了。内存问题:
1|rest-backenq | FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
我将内存从4GB增加到16GB
没有效果
我无法控制从中获取数据的外部API
我能做些什么来解决这个问题 我认为您的文件正在下载到内存中,请使用
请求
模块而不是Axios来下载文件
var fs = require('fs');
var request = require('request');
var progress = require('request-progress');
// The options argument is optional so you can omit it
progress(request({
url : url,
headers: {
'content-type': 'application/json',
'Authorization': `Bearer ${forgeAccessToken}`
}
}), {
// throttle: 2000, // Throttle the progress event to 2000ms, defaults to 1000ms
// delay: 1000, // Only start to emit after 1000ms delay, defaults to 0ms
// lengthHeader: 'x-transfer-length' // Length header to use, defaults to content-length
})
.on('progress', function (state) {
// The state is an object that looks like this:
// {
// percent: 0.5, // Overall percent (between 0 to 1)
// speed: 554732, // The download speed in bytes/sec
// size: {
// total: 90044871, // The total payload size in bytes
// transferred: 27610959 // The transferred payload size in bytes
// },
// time: {
// elapsed: 36.235, // The total elapsed seconds since the start (3 decimals)
// remaining: 81.403 // The remaining seconds to finish (3 decimals)
// }
// }
console.log('progress', state);
})
.on('error', function (err) {
// Do something with err
})
.on('end', function () {
// Do something after request finishes
})
.pipe(fs.createWriteStream('IE11.Win8.1.For.Windows.VirtualBox.zip'));
要了解更多信息,请遵循此问题,
你能发布你的服务器端代码吗?我认为这个代码在这种情况下没有帮助。这是服务器端代码是的,很抱歉我错过了。这个文件有多大我不知道,因为我收不到。但是它大于20mb。这是json数据,所以它不是文件。这段代码有点复杂。我更喜欢Axios。我增加了NodeJS的内存限制,解决了这个问题。