如何修复“多次调用写回调”

Posted

技术标签:

【中文标题】如何修复“多次调用写回调”【英文标题】:How to fix 'write callback called multiple times' 【发布时间】:2019-12-01 14:55:50 【问题描述】:

对于以前运行良好的项目,我突然收到一个我不理解的 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)

【问题讨论】:

【参考方案1】:

如果其他人有这个问题:

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

【讨论】:

【参考方案2】:

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

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

谢谢。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于如何修复“多次调用写回调”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“getOutputStream() 已为此响应调用”

JavaRMI服务远程方法调用漏洞如何修复lin

如何修复尝试使用 coredata 递归调用 -save 错误?

如何修复'期望一个赋值或函数调用,而不是看到一个表达式'

如何修复“尝试调用方法‘addMoney’(零值)”错误?

如何修复 Flutter 构建问题期间调用的 setState