Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完成可写流_Javascript_Node.js_Ecmascript 6_Stream_Pipe - Fatal编程技术网

Javascript 完成可写流

Javascript 完成可写流,javascript,node.js,ecmascript-6,stream,pipe,Javascript,Node.js,Ecmascript 6,Stream,Pipe,我正在使用gulp来处理、缩小和捆绑我的css文件(还有js)。但我不想马上写文件。我想检查处理内容的md5和是否不等于捆绑文件现有版本的md5和,在这种情况下只写 而不是立即编写文件,我试图从进程中获取字符串 但是建筑不起作用 const Stream = require('stream'); const writableStream = new Stream.Writable({ objectMode: true }); var file = ""; writableStream._wr

我正在使用gulp来处理、缩小和捆绑我的css文件(还有js)。但我不想马上写文件。我想检查处理内容的md5和是否不等于捆绑文件现有版本的md5和,在这种情况下只写

而不是立即编写文件,我试图从进程中获取字符串

但是建筑不起作用

const Stream = require('stream');
const writableStream = new Stream.Writable({ objectMode: true });

var file = "";

writableStream._write = (chunk, encoding, next) => {
    file += chunk.contents.toString();
    next();
}

let bundlePipe = gulp.src([...vendorLinks.map(e => path.resolve(htmlPath + e)), ...resourceLinks.map(e => path.resolve(htmlPath + e))], { sourcemaps: true })
    .pipe(postcss([cssnext, cssnano]))
    .pipe(concat("style.bundle.min.css"))
    .pipe(writableStream);
    //.pipe(gulp.dest(path.resolve(paths["html/static/css"]))); 


bundlePipe.on("end", () => {
    // It never goes there!
    console.log("get file contents", file); 
}
似乎我创建的writableStream不知道所有数据都已传递给它,并且从不发出结束信号


在writableStream从管道中获取所有数据后,如何才能关闭它

可写流不发出
end
,只有可读流发出此类事件

可写流上的等价项是
finish
。您可以在Node.js的中找到此事件的详细信息


可读和可写流具有不同事件来表示它们已结束/完成的原因是,也存在混合流(例如,
双工流
),它们同时由可读流和可写流组成,因此,您需要能够区分一种和另一种类型的事件。

可写流不会发出
end
,只有可读流发出此类事件

可写流上的等价项是
finish
。您可以在Node.js的中找到此事件的详细信息


可读和可写流具有不同事件来表示它们已结束/完成的原因是,也存在混合流(例如,
双工流
),它们同时由可读流和可写流组成,因此,您需要能够区分一种类型和另一种类型的事件。

为什么gulp.dest(path.resolve(path[“html/static/css”])完成正常,而writeblestream没有?我是否需要以某种方式处理writableStream中入站可读流的结束事件以使其完成?由于您提供的信息,我稍微修改了问题。为什么gulp.dest(path.resolve(path[“html/static/css”])会完成,而writableStream不会?我是否需要以某种方式处理writableStream中入站可读流的结束事件以使其完成?由于您提供的信息,我稍微修改了这个问题