是否可以让Node.js应用程序在外部文本编辑器中接收用户输入数据



我正在为Node.js编写一个应用程序。我想执行一个像VSCode这样的外部文本编辑器,等待用户输入任何文本并保存它们。之后,应用程序将从文本编辑器接收保存的数据作为stdin。我的意思是,它的作用与git commit[ENTER]相同。

我尝试使用open [path to app]命令,但效果不佳。进程退出,无需等待。

有办法做到这一点吗?

您不需要外部库。您可以使用child_process.spawn启动程序,然后使用fs.watch等待对文件的更改。当出现更改时(或编辑器关闭时(,您可以再次读取文件。

代码(未测试(:

import {spawn} from "child_process";
import fs from "fs";
function getEditorInput(editorCmd, file, cb) {
const process = spawn(editorCmd, [file]);
process.on('close', (code) => {
// re-read file, and cb
});
// OR
const watcher = fs.watch(file, (ev, f) => {
// re-read file, call cb
})
}

请注意,您应该在某个时刻(比如编辑器关闭后(使用watcher.close()关闭观察程序。

相关内容

最新更新