anandthakker / doiuse

:bomb: Lint CSS for browser support against caniuse database.
MIT License
1.24k stars 51 forks source link

"Invalid non-string/buffer chunk" when using stream API #64

Closed thany closed 1 year ago

thany commented 7 years ago

I'm trying to use doiuse from gulp, but I don't use postcss. So I came up with this:

const doiuse = require("doiuse/stream");

gulp.task("doiuse", [ "sass" ], function() {
  return gulp.src("source/assets/css/main.css")
    .pipe(doiuse({
      browsers: [ "> 1%" ]
    }))
    .on("data", info => console.log(JSON.stringify(info)));
});

It looks like that's what it wants me to do, looking at the documentation. But here's what I get:

[17:06:45] Using gulpfile d:\Klanten\qsdashboard\gulpfile.js
[17:06:45] Starting 'sass'...
[17:06:46] Finished 'sass' after 97 ms
[17:06:46] Starting 'doiuse'...
[17:06:46] 'doiuse' errored after 56 ms
[17:06:46] TypeError: Invalid non-string/buffer chunk
    at validChunk (d:\Klanten\qsdashboard\node_modules\css-tokenize\node_modules\readable-stream\lib\_stream_writable.js:180:14)
    at Tokenize.Writable.write (d:\Klanten\qsdashboard\node_modules\css-tokenize\node_modules\readable-stream\lib\_stream_writable.js:209:12)
    at DuplexWrapper._write (d:\Klanten\qsdashboard\node_modules\duplexer2\index.js:57:18)
    at doWrite (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:279:12)
    at writeOrBuffer (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:266:5)
    at DuplexWrapper.Writable.write (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:211:11)
    at DuplexWrapper._write (d:\Klanten\qsdashboard\node_modules\duplexer2\index.js:57:18)
    at doWrite (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:279:12)
    at writeOrBuffer (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:266:5)
    at DuplexWrapper.Writable.write (d:\Klanten\qsdashboard\node_modules\duplexer2\node_modules\readable-stream\lib\_stream_writable.js:211:11)
    at write (d:\Klanten\qsdashboard\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:623:24)
    at flow (d:\Klanten\qsdashboard\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:632:7)
    at DestroyableTransform.pipeOnReadable (d:\Klanten\qsdashboard\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:664:5)
    at emitNone (events.js:86:13)
    at DestroyableTransform.emit (events.js:188:7)
    at emitReadable_ (d:\Klanten\qsdashboard\node_modules\vinyl-fs\node_modules\readable-stream\lib\_stream_readable.js:448:10)

Versions: Node 7.7.2 NPM 4.1.2 Gulp 3.9.1 Doiuse 2.5.0 Windows 10

jialiang commented 4 years ago

Just want to say that process.stdin as used in the example and gulp.src returns different type of streams.

If you go to the source of the error node_modules\readable-stream\lib\_stream_writable.js:180:14) and console log chunk, you'll see that it is a Vinyl object when it is expecting a Buffer object.

clshortfuse commented 1 year ago

Seems like a gulp issue in the sense it doesn't pass a string. Whatever gulp passes should be transformed into a string first.