2015-04-03 8 views
7

Bei der folgenden example recipe aus dem Repository Gulp.js. Ich erhalte eine Fehlermeldung:Object # <Readable> hat keine Methode 'schreiben' bei der Verwendung von Gulp + Browserify

[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) 

Ich habe versucht, den Quellcode zu ändern, meine Anforderungen anzupassen und das ist die Gulpfile Ich versuche, ohne Glück zu laufen.

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']); 

Und das ganze Beispiel aus here

Irgendwelche Ideen, warum der Strom könnte nur gelesen zu finden? Jede Hilfe wird geschätzt.

+0

Überprüfen Sie das Rezept wieder - es wurde [aktualisiert] (https://github.com/gulpjs/gulp/commit/75b5b74be0b0d37c10425363ac72e498c1bf012b), kurz nachdem Sie diese Frage gestellt. @ ddprrt's [Antwort] (http://stackoverflow.com/a/29430741/765987) sieht korrekt aus basierend auf dem aktualisierten Rezept – JakeBoone

+0

Ich bin mir nicht sicher, ob ich die Einträge verstehe: './entry.js', .pipe (source ('app.js')) Teil. In der alten Version wurde einmal eine Quelldatei angegeben: './app.js' Aber in der neuen Version wurde diese entry.js eingeführt. Was ist diese Datei und warum ist sie betroffen? – Dtipson

Antwort

9

Ich bekomme das gleiche Problem. Und ich finde die Lösung. Sie stufen die Version "browserify" auf die neueste Version 9.0.4 herunter. Und alles wird in Ordnung sein. Sie können auf den Commit-Verlauf verweisen.

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

==== ==== aktualisieren

löse ich diesen Fehler. Ich benutze 'through2', der Code ist wie folgt.

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/')) 

Die Lösung ist von diesem Problem.

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

+0

Danke für diesen Beitrag. Der Hinweis, browserify 9.0.4 zu verwenden, ist gut. Aber es muss 9.0.4 sein, 9.0.8 zum Beispiel funktioniert auch nicht .. du kannst das in deinem package.json mit diesem erreichen: "browserify": "9.0.4" oder wenn du es über dein Terminal installierst: npm installiere [email protected] – damir

4

Ich bin mir nicht sicher über Vinyl-Transformation, aber ich denke, die richtige Art der Verwendung von browserify ist es als Ausgangspunkt zu verwenden, und transformieren Sie den Stream danach zu einem Vinyl-Objekt. Zumindest ist das in den Rezepten.

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/')); 
}); 
+0

Ihr Beispiel funktioniert reibungslos, danke! Ich warte auf andere Antworten, die das ursprüngliche Problem erklären könnten, aber wenn nichts auftaucht, akzeptiere ich das als Antwort. Ich würde gern erfahren, was sie in dem verknüpften Rezept getan haben. – Tx3

+0

Wie definiert man die Transformation im browserify-Objekt zB: browserify ({transform: [riotify]}) .https: //github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-transforms.md .. Abgesehen davon, dass ich das selbe Problem selbst habe .. – user3340677

+0

@ user3340677 Ich habe es in dem Beispiel versucht, das ich eingefügt habe: var b = browserify ({debug: true, transform: ['riotify']}); aber es hat nicht geholfen. Die Transformation darunter ist eine Vinyl-Transformation, die ein völlig anderes Biest ist. – Tx3