我正在尝试为每个平台预处理我的js文件并使用我的js-preprocess.js美化它。我能够处理多达153个文件。如果文件数量增加,控制台显示以下错误! 致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足 请帮我解决这个问题! 这是我主要工作的一个代码片段!
fs.readdir(inputdir,function(err,files) {
console.time('PreProcessingJStime')
files.forEach(function(file) {
if (file.indexOf(".js") != -1) {
console.log('PreProcessing JS File : '+file);
fs.writeFile(outputdir+"/"+file,beautify.js_beautify(preprocess(fs.readFileSync(inputdir+"/"+file,'utf-8'),defines).join('\n'),{preserve_newlines:false}));
}
},this);
console.timeEnd('PreProcessingJStime')
})
提前致谢:)
答案 0 :(得分:2)
您正在使用fs.writeFile
,这是异步的。这意味着您要同时写入所有文件,并且所需的所有数据都会缓存在内存中。如果将其更改为fs.writeFileSync
,则在继续下一个文件之前完成一个文件,并且所有与先前文件相关的数据都变为垃圾,因此垃圾收集器将在需要时获取它。