D
Deno

help

How to re-open Deno.stdin?

Mmattvr4/14/2023
I'm noticing that Deno gives an error when trying to window.prompt after I've consumed stdin.
// prompt.ts
// echo "test" | deno run prompt.ts

let message = ''
const decoder = new TextDecoder();

for await (const chunk of Deno.stdin.readable) {
const textChunk = decoder.decode(chunk);
message += textChunk
}

console.log('got', message)

window.prompt('hello?')
// prompt.ts
// echo "test" | deno run prompt.ts

let message = ''
const decoder = new TextDecoder();

for await (const chunk of Deno.stdin.readable) {
const textChunk = decoder.decode(chunk);
message += textChunk
}

console.log('got', message)

window.prompt('hello?')
When invoked:
> echo "test" | deno run prompt.ts
got test

error: Uncaught (in promise) BadResource: Bad resource ID
window.prompt('hello?')
^
at isatty (ext:runtime/40_tty.js:19:7)
at prompt (ext:runtime/41_prompt.js:36:8)
at [..]/prompt.ts:14:8
> echo "test" | deno run prompt.ts
got test

error: Uncaught (in promise) BadResource: Bad resource ID
window.prompt('hello?')
^
at isatty (ext:runtime/40_tty.js:19:7)
at prompt (ext:runtime/41_prompt.js:36:8)
at [..]/prompt.ts:14:8
Is it not possible to re-open Deno.stdin for reading more than once? I notice it's closed from Deno.resources after the initial read. I'm doing this for a command line utility which supports I/O piping. Thanks for any help!

Looking for more? Join the community!