Gulp - CALL_AND_RETRY_LAST分配失败 - 处理内存不足

Mic*_*ael 9 node.js gulp

在调用我的一个gulp任务时,我得到了" FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory".

我在这个问题中发现我可以将参数传递给节点以增加默认的内存限制:node --max-old-space-size=2000 server.js.但是如何告诉gulp将参数传递给node.exe?这是我可以传递给gulp 的标志列表,我希望找到一个gulp在为任务启动它时传递给节点的标志.

导致问题的任务:

var gulp = require('gulp');
var imagemin = require('gulp-imagemin');

gulp.task('imagemin', function() {
  var OUTPUT_FOLDER = '../Release_Prepared/';
  var extensionsToOptimize = ['gif', 'jpeg', 'jpg', 'png', 'svg'];
  var glob = [];

  for(var i=0; extensionsToOptimize.length; i++){
    glob.push(OUTPUT_FOLDER + '**/*.' + extensionsToOptimize[i]);
  }

  gulp.src(glob)
  .pipe(imagemin({
    verbose: true
  }))
  .pipe(gulp.dest(OUTPUT_FOLDER));
});
Run Code Online (Sandbox Code Playgroud)

小智 23

我今天刚刚发现gulp可以被赋予任何V8选项,它将被传递给节点.例如,do gulp yourTask --max_old_space_size=2000,它会为您提供所需的结果.要查看要传递的V8标志列表,请键入node --v8-options终端.


Raj*_*dev 6

在我们的情况下,第一次在我执行gulp build命令时很好.我有四个单独的任务.每个任务为每个模块创建单独的构建文件.我们一直在为最终版本运行Gulp命令.

我们在那里process out of memory不断面对这个问题.即使我们为流程分配了大量内存.如下所示 - 大约8GB.但是,它仍然失败了.

gulp --max-old-space-size=8192
Run Code Online (Sandbox Code Playgroud)

解:

  1. 只需删除已经创建的以前构建的文件.以上命令创建新文件.因此,该过程无缝地工作.

例如:删除main-built.js手动/通过自动化命令.

  1. 在其他情况下,只需通过执行以下命令清除缓存.

npm cache clean

  1. 因为我们有大量的JS文件.这也是另一种情况,它可能会导致这种问题.删除不需要的和未使用的Js文件.

希望这可以帮助.