ts-node icon indicating copy to clipboard operation
ts-node copied to clipboard

calling `repl.start()` causes a doubling of stdin/stdout

Open natemwilson opened this issue 2 years ago • 0 comments

Search Terms

repl repl.start() context double STDIN STDOUT

Expected Behavior

STDOUT is not double printed

Actual Behavior

STDOUT is double printed

Steps to reproduce the problem

I want a ts-node repl, with all its benefits, with context from my app attached, (note I would in reality attach an imported module, but here am just attaching a variable to illustrate my need minimally.) Since I want context attached to my repl, I am using the node built-in package, repl, like so:

example.ts

import repl from "repl";

const foo = "bar";

const replServer = repl.start();

replServer.context.foo = foo;

Maybe this is not best practice, if so, please advise.

If I try to run the script example.ts with ts-node, then type the six characters, f,o,o,b,a,r, I see the following output:

$ npx ts-node  -r ./example.ts
> ffoobbaarr

So the bug is that every input is doubled, as I would expect to only see foobar.

Minimal reproduction

https://github.com/TypeStrong/ts-node-repros/pull/38

Specifications

  • ts-node version: v10.9.2
  • node version: v20.11.0
  • TypeScript version: v5.3.3
  • tsconfig.json, if you're using one:
{}
  • package.json:
{
  "dependencies": {
    "ts-node": "latest",
    "typescript": "latest"
  }
}

  • Operating system and version: Mac OSX 13.4

natemwilson avatar Feb 20 '24 16:02 natemwilson