【问题标题】:How to fix 'write callback called multiple times'如何修复“多次调用写回调”
【发布时间】:2026-01-06 19:00:01
【问题描述】:

对于以前运行良好的项目,我突然收到一个我不理解的 gulp 错误。我没有更改我的 gulpfile.js 中的任何内容,所以我不明白是什么导致了错误。任何人都可以启发我吗?

这是我得到的错误:

Error: write callback called multiple times
    at DestroyableTransform.afterTransform (/Users/hannah/Documents/random projects/salamander/node_modules/readable-stream/lib/_stream_transform.js:84:31)
    at EventEmitter.signals.on.err (/Users/hannah/Documents/random projects/salamander/node_modules/gulp-cache/lib/index.js:451:7)
    at EventEmitter.emit (events.js:198:13)
    at DestroyableTransform.onError (/Users/hannah/Documents/random projects/salamander/node_modules/gulp-cache/lib/index.js:288:15)
    at Object.onceWrapper (events.js:286:20)
    at DestroyableTransform.emit (events.js:203:15)
    at Immediate.<anonymous> (/Users/hannah/Documents/random projects/salamander/node_modules/through2-concurrent/through2-concurrent.js:37:14)
    at runCallback (timers.js:706:11)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
Emitted 'error' event at:
    at DestroyableTransform.onerror (/Users/hannah/Documents/random projects/salamander/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_readable.js:558:12)
    at DestroyableTransform.emit (events.js:198:13)
    at DestroyableTransform.afterTransform (/Users/hannah/Documents/random projects/salamander/node_modules/readable-stream/lib/_stream_transform.js:84:17)
    at EventEmitter.signals.on.err (/Users/hannah/Documents/random projects/salamander/node_modules/gulp-cache/lib/index.js:451:7)
    [... lines matching original stack trace ...]
    at runCallback (timers.js:706:11)

【问题讨论】:

    标签: gulp node-modules


    【解决方案1】:

    如果其他人有这个问题:

    我发现错误来自我的图像缩小任务 (gulp-imagemin)。我的图像文件夹中有一些 SVG 文件,我认为这些文件的结构不正确或其他什么。我将它们从图像文件夹中删除,然后 gulp 再次开始运行。

    【讨论】:

      【解决方案2】:

      这实际上是因为我们使用了 imagemin 的插件和缓存。

      请运行这个 npm rebuild jpegtran-bin 这将重置它,然后再次运行你的 gulp 任务评论!

      谢谢。

      【讨论】:

        【解决方案3】:

        在我的例子中,它是使用 imagemin.gifsicle() 和一个大的动画 gif 文件 (57Mb) 进行优化。用 PhotoShop 重新保存图像没有帮助。我不确定问题的根源,但删除文件可以解决问题。

        【讨论】:

          【解决方案4】:

          我的问题是一个愚蠢的问题...我正在使用 through2 来管道和替换我的文件的内容并将其包装为一个函数。好吧,这个函数试图 console.log 一个从未在调用它的逻辑分支中定义的变量。

          所以,是的,错误消息让我看起来比我需要的更深入,因为我本来预期的是未定义的类型错误,而不是我得到的“多次调用写回调”。

          【讨论】: