首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从through2输出的管道输出

从through2输出的管道输出
EN

Stack Overflow用户
提问于 2015-10-25 09:15:51
回答 1查看 1K关注 0票数 2

我是第一次尝试through2,但我遇到了一些麻烦。我正在通过一系列的流处理我的数据,并且我想退出我的转换函数。

文档说我应该使用this.push从我的transform函数中获取数据,然后在完成后调用回调,所以我尝试使用管道(因为管道应该做同样的事情,对吧?),但是我得到了一个writeAfterEnd错误。我的代码和堆栈跟踪如下,但我不知道该怎么做。谁能给我指个方向?

代码-

代码语言:javascript
复制
function run(chunk, encoding, callback) {
    this.on("finish", function(){
        console.log("this finished")
        callback()
    })
    dataStream = new stream.Readable({objectMode: true});
    dataStream._read = function noop(){};
    dataStream.push(chunk);
    dataStream.pipe(sass()).pipe(this)
}

gulp.src("./web-src/scss/add_post.scss").pipe(through.obj(run)).on('data', function(chunk){console.log(chunk)})

堆栈跟踪-

代码语言:javascript
复制
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: write after end
    at writeAfterEnd (/Volumes/BackRoom/Dropbox/Timpani/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:198:12)
    at DestroyableTransform.Writable.write (/Volumes/BackRoom/Dropbox/Timpani/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:243:5)
    at write (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:623:24)
    at flow (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:632:7)
    at DestroyableTransform.pipeOnReadable (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:664:5)
    at DestroyableTransform.emit (events.js:104:17)
    at emitReadable_ (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:448:10)
    at emitReadable (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:444:5)
    at readableAddChunk (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:187:9)
    at DestroyableTransform.Readable.push (/Volumes/BackRoom/Dropbox/Timpani/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:149:10)
EN

回答 1

Stack Overflow用户

发布于 2016-01-07 06:09:00

你是在实现一个流,还是仅仅在使用through2?

使用.push()的API docs warn against流消费者。

错误:如果块===为null,则在end之后写入可能会发生,“流实现程序接口”将其解释为EOF。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33325120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档