javascript - Sharp.js が stream.Writable にパイプしていませんか?

okwaves2024-01-24  6

「シャープ」で見つかりました: 「^0.26.0」

何らかの理由でこれは機能しません:

const readableStream = new stream.Readable({
    objectMode: true,
    read() {}
})

class FileSwitch extends stream.Writable {
    constructor(options, folder) {
        super(options)
        this.i = 0
    }

    _write(chunk, encoding, next) {
        console.log(this.i)
        this.i++
        next()
    }
}

var png = sharp().png()
var fileswitch = new FileSwitch();
readableStream.pipe(png).pipe(fileswitch)

出力なし

それでも、これは何らかの理由で機能します:

const readableStream = new stream.Readable({
    objectMode: true,
    read() {}
})

class FileSwitch extends stream.Writable {
    constructor(options, folder) {
        super(options)
        this.i = 0
    }

    _write(chunk, encoding, next) {
        console.log(this.i)
        this.i++
        next()
    }
}

var png = sharp().png()
var fileswitch = new FileSwitch();
readableStream.pipe(png.pipe(fileswitch))
>>> 0
>>> 1
>>> 2

読み取り可能なストリームには、setInterval() を使用して 1 秒間隔で文字列データの新しいチャンクがプッシュされます。

私は、本来あるべき機能を書き込み可能なストリームに公開していませんか?ドキュメントには、この設定は機能するはずだと書かれています :)

アップデート

@Matt のコメントからの提案を追加しました。

const readableStream = new stream.Readable({
    objectMode: true,
    read() {}
})

class FileSwitch extends stream.Writable {
    constructor(options, folder) {
        super(options)
        this.i = 0
    }

    _write(chunk, encoding, next) {
        console.log(this.i)
        this.i++
        next()
    }
}

readableStream.on('error', listener => {
    console.log(listener)
})

readableStream.on('warning', listener => {
    console.log(listener)
})

var png = sharp().png()
var fileswitch = new FileSwitch();
readableStream.pipe(png).pipe(fileswitch)

出力なし

は sh にパイプされるデータですarp でエラーが発生しましたか?

– マット

2020 年 9 月 3 日 4:01

@Matt いいえ、何らかの理由ではありません。停止するまでに 3 つのテキスト チャンクを読み取り可能にプッシュする間隔があり、プロセスはエラーなしで終了します。

– ブダイス

2020 年 9 月 3 日 4:28

.on('error を追加9;、console.error) ハンドラーと .on('warning'。failOnError オプションを設定する可能性があります。

– マット

2020 年 9 月 3 日 4:37

@Matt 提案されたコードでスレッドを更新しました。出力は変わりません。

– ブダイス

2020 年 9 月 3 日 14:54



------------------------

readableStream にプッシュされているデータのチャンクは、sharp で png に変換できる有効な画像形式ではありませんでした。エラー イベント リスナーを png tran に追加する正しいエラーが表示されました。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。