如何将缓冲区作为管道输入传递给节点脚本

How do I pass a buffer as a piped input to a node script?

本文关键字:节点 脚本 输入 管道 缓冲区      更新时间:2023-09-26

我想将缓冲区作为管道输入发送到终端上的节点脚本。因此,我使用以下代码创建了一个脚本 ping.js:

#!/usr/local/bin/node
function bufferDemo() {
  var objBuffer = new Buffer(29);
  objBuffer.writeUInt32LE(29,0);
  objBuffer.write('{message:"pingfrompingjs"}',4);
  return objBuffer;
}
bufferDemo();

然后我在命令行上运行以下命令:

 ./ping.js | ./index.js 

我也试过:

 ./ping.js > out.json

out.json是空的,所以很明显ping.js没有传递缓冲区。我如何实现这一点?我对节点相对较新。

你实际上并没有通过返回函数中的值来输出任何东西。你应该写信给process.stdout

process.stdout.write(objBuffer)

函数return没有任何效果。如果你想让你的命令输出一些东西,你必须写信给stdout(或stderr):

process.stdout.write(objBuffer);