Reputation: 102597
I write a testing code for process.stdin
:
console.log('User input: ');
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
const chunk = process.stdin.read();
if (chunk) {
process.stdout.write('Print Data: ', chunk, '\n');
}
});
process.stdin.on('end', () => {
process.stdout.write('end.\n');
});
when I input some text, press enter
, node.js
give me:
buffer.js:302
throw new TypeError('"encoding" must be a valid string encoding');
^
TypeError: "encoding" must be a valid string encoding
at fromString (buffer.js:302:13)
at Function.Buffer.from (buffer.js:173:12)
at createWriteReq (net.js:803:45)
at WriteStream.Socket._writeGeneric (net.js:754:11)
at WriteStream.Socket._write (net.js:777:8)
at doWrite (_stream_writable.js:385:12)
at writeOrBuffer (_stream_writable.js:371:5)
at WriteStream.Writable.write (_stream_writable.js:288:11)
at WriteStream.Socket.write (net.js:695:40)
at ReadStream.process.stdin.on (/Users/elsa/workspace/Training.nodejs/examples/api/process/stdin.js:7:20)
How to solve this? thanks.
Upvotes: 1
Views: 784
Reputation: 133208
The problem is here:
process.stdout.write('Print Data: ', chunk, '\n');
You need to concatenate the strings. This is not a console.log function, e.g.:
process.stdout.write('Print Data: ' + chunk + '\n');
Upvotes: 1