对象#<Readable>在使用Gulp + Browserify时没有方法“写入”

当遵循Gulp.js存储库中的示例配方时 。 我收到一个错误:

[12:27:31] Using gulpfile C:\GH\riot-tag-build\Gulpfile.js [12:27:31] Starting 'browserify'... _stream_readable.js:602 var written = dest.write(chunk); ^ TypeError: Object #<Readable> has no method 'write' at write (_stream_readable.js:602:24) at flow (_stream_readable.js:611:7) at _stream_readable.js:579:7 at process._tickCallback (node.js:442:13) 

我试图修改源代码以符合我的要求,这是我尝试运行没有运气的Gulpfile。

 var gulp = require('gulp'); var browserify = require('browserify'); var riotify = require('riotify'); var transform = require('vinyl-transform'); var buffer = require('gulp-buffer'); gulp.task('browserify', function () { // set up the browserify instance on a task basis var b = browserify({debug: true}); // transform regular node stream to gulp (buffered vinyl) stream var browserified = transform(function(filename) { b.add(filename); return b.bundle(); }); return gulp.src('./main.js') .pipe(browserified) .pipe(gulp.dest('./dist/')); }); gulp.task('default', ['browserify']); 

整个例子可以从这里find

任何想法为什么stream可能是只读? 任何帮助赞赏。

我得到同样的问题。 我find解决scheme。 您只需将“browserify”版本降级到最新的9.0.4。 什么都可以。 您可以参考提交历史logging。

https://github.com/substack/node-browserify/commits/master

==== ====更新

我解决了这个错误。 我使用'through2',代码如下。

 gulp.src('./src/index.js') .pipe(through2.obj(function (file, enc, next){ browserify(file.path) .bundle(function(err, res){ // assumes file.contents is a Buffer file.contents = res; next(null, file); }); })) .pipe(gulp.dest('./build/')) 

解决方法是从这个问题。

https://github.com/substack/node-browserify/issues/1044

我不知道乙烯基转换,但我想使用browserify的正确方法是用它作为起点,然后将stream转换为乙烯基对象。 至less这是食谱中的内容。

 var gulp = require('gulp'), source = require('vinyl-source-stream'), browserify = require('browserify'); gulp.task('browserify', function () { return browserify({ debug: true, entries: ['./main.js'] }).bundle() .pipe(source('main.bundle.js')) .pipe(gulp.dest('./dist/')); });