1. ホーム
  2. javascript

[解決済み] Node.jsのストリームの内容を文字列変数に読み込むにはどうしたらいいですか?

2022-04-20 14:06:04

質問

Nodeのプログラムをハックしているのですが、その中で smtp-protocol を使用してSMTPメールをキャプチャし、メールデータで動作します。ライブラリはメールデータをストリームとして提供し、私はそれを文字列に取得する方法を知りません。

現在、stdoutに書いているのは stream.pipe(process.stdout, { end: false }) しかし、私が言ったように、私は代わりに文字列でストリームのデータが必要で、それはストリームが終了した後に使用することができます。

Node.jsのストリームからすべてのデータを文字列に集めるにはどうしたらいいですか?

どのように解決するのですか?

(この回答は数年前のもので、当時はベストアンサーでした。現在ではこの下にもっと良い答えがあります。私はnode.jsに追いついておらず、この回答は"この質問で正しい"とマークされているため、削除することができません。もし、ダウンクリックを考えているのなら、どうすればいいのでしょうか?)

重要なのは data end のイベントが発生します。 読み取り可能なストリーム . これらのイベントを聴く。

stream.on('data', (chunk) => { ... });
stream.on('end', () => { ... });

を受信すると data イベントで、データを収集するために作成されたBufferに新しいデータのチャンクを追加します。

を受信すると end イベントにて、完成したBufferを必要に応じて文字列に変換してください。そして、それを使って必要なことを行ってください。