对象 #<Readable> 在使用 Gulp + Browserify 时没有方法 'write'
Object #<Readable> has no method 'write' while using Gulp + Browserify
当关注 Gulp.js 存储库中的 example recipe 时。我得到一个错误:
[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']);
整个例子可以从here
中找到
知道为什么流可能是只读的吗?任何帮助表示赞赏。
我不确定 vinyl-transform,但我想使用 browserify 的正确方法是将其用作起点,然后将流转换为 vinyl 对象。至少食谱上是这样的。
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/'));
});
我遇到了同样的问题。我找到了解决方案。您只需将 "browserify" 版本降级到最新的 9.0.4。一切都会好起来的。您可以参考提交历史。
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/'))
解决方案来自这个问题。
当关注 Gulp.js 存储库中的 example recipe 时。我得到一个错误:
[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']);
整个例子可以从here
中找到知道为什么流可能是只读的吗?任何帮助表示赞赏。
我不确定 vinyl-transform,但我想使用 browserify 的正确方法是将其用作起点,然后将流转换为 vinyl 对象。至少食谱上是这样的。
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/'));
});
我遇到了同样的问题。我找到了解决方案。您只需将 "browserify" 版本降级到最新的 9.0.4。一切都会好起来的。您可以参考提交历史。
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/'))
解决方案来自这个问题。