Node pipe input
If you want to pipe the output of one program to a node script, you can use process.stdin
.
echo "name" | ./hello.js
The example above should output "Hello " + any output of the first script.
const stdin = process.stdin; let data = ''; stdin.setEncoding('utf8'); stdin.on('data', function (chunk) { data += chunk; }); stdin.on('end', function () { console.log("Hello " + data); }); stdin.on('error', console.error);
Using the input stream (stdin
), we read the input data that was sent by the first script.
This can be rewrite to use promises, so it looks like this:
getInput().then(sayHello).catch(console.error);
Complete example below:
function sayHello(name) { console.log("Hello " + name); } function getInput() { return new Promise(function (resolve, reject) { const stdin = process.stdin; let data = ''; stdin.setEncoding('utf8'); stdin.on('data', function (chunk) { data += chunk; }); stdin.on('end', function () { resolve(data); }); stdin.on('error', reject); }); } getInput().then(sayHello).catch(console.error);