我一直在玩 Node 的 REPL。我认为通过 Socket 使其可用,通过 Telnet/puTTY/whatever 连接到它,并即时调试我的服务器会非常酷。
我使用了此处找到的示例:http ://nodejs.org/docs/latest/api/repl.html ,基本上看起来像这样......
net.createServer(function (socket) {
var cmd = repl.start(">", socket);
//... some other stuff here.... not important
}).listen(5001);
好,很好!现在我可以使用 Telnet 连接到端口 5001 并与 REPL 交互。但是,我遇到了控制字符(即 Tab、Ctrl+C、向上箭头、向下箭头等)的问题。我怎样才能让这些工作?例如,如果我使用 telnet 连接,输入“1+1<Enter>”,我得到 2。但是,当我点击“<Up Arrow><Enter>”时,我得到“...”,好像REPL 正在等待我完成命令。但是,实际上,我想做的只是查看我执行的最后一个命令。我知道 Telnet 喜欢保持其输出,直到输入换行符,但是有什么方法可以避免这种情况吗?
$ telnet localhost 6634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
>1+1
2
>^[[A
...
编辑:我也发现了这个问题,可能相关也可能不相关 -箭头键在 Telnet 中变成控制字符
编辑2:嗯......rlwrap
似乎解决了我的大部分问题:
$ rlwrap telnet localhost 6634
唯一不起作用的是局部/全局变量的选项卡完成,我想我可以没有它。我最关心的是命令历史。rlwrap
很整洁!