我希望Node.js应用程序能够在运行时接受命令。例如,考虑一下Nodemon
,您可以在控制台中键入rs
重新启动脚本。
我已经考虑过使用process.stdin。因此,我创建了一个永久运行的简单脚本,并每秒在控制台中输出一些文本。我还添加了一些根据process.stdin documentation
改编的代码setInterval(function () {
console.log("Process running");
}, 1000);
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
let chunk;
while ((chunk = process.stdin.read()) !== null) {
console.log(`data: ${chunk}`);
}
});
process.stdin.on('end', () => {
console.log("end")
});
显然,这不是我想要的。我真的不确定stdin是否是处理命令的正确api,以及我的代码是否有问题?
对此有何看法? 谢谢!
答案 0 :(得分:0)
您可以使用https://www.npmjs.com/package/node-cmd获取命令并在回调中执行操作
答案 1 :(得分:0)
答案 2 :(得分:0)
我找到了解决方案。来自{。{3}}的Node.js示例无法正常工作,至少不适用于Node.js v11.13.0。问题似乎位于while循环中。
我对此进行了修改,现在可以使用了。
import os from "os";
setInterval(function () {
console.log("Process running");
}, 3000);
process.stdin.setEncoding("utf8");
process.stdin.on("readable", function () {
const chunk = process.stdin.read() as string;
chunk
.split(os.EOL)
.forEach(str => {
if (str === null || !str.length) {
return;
}
console.log("data: " + str);
});
});