请注意以下脚本:
const child_process = require('child_process');
process.stdin.setRawMode(true);
process.stdin.on("data", (data) => {});
var child = child_process.spawn("vim", ["README.md"], {stdio: "inherit"});
child.on("exit", (e, code) => {
process.exit();
});
它设置原始模式,然后在vim
上打开readme.md
。 键入几秒钟后,VIM完全停止响应。 按键什么也不做,恢复的唯一方法就是关闭标签。 通过移除on(“data”)
回调来解决这个问题。 我正在macOS Catalina上使用iTerm,节点版本V13.10.1
。 是这个脚本错了,还是这是Node.js,VIM或者也许是Iterm上的一个bug?
这似乎是在process.stdin.on(“data”)
处于活动状态时引起的,这导致Node.js挂起等待输入。 这可以通过在生成子进程之前使用process.stdin.pause
来解决,然后使用process.stdin.resume
继续侦听child.on(“exit”)
内部的内容。