[英]How do I check if a node.js process is being piped input from stdout?
我目前正在构建一个接受来自python脚本的输入的节点应用程序。 我们计划做这样的管道,例如pyton script.py | node index.js
pyton script.py | node index.js
。
我想检查是否有输入正在传递。这样,如果有数据正在传递,请启动快速服务器。 但是,如果没有管道传输的数据,则退出节点进程。 我目前正在检查流中的输入,但是我意识到,如果没有stdout的输入,我将无法执行此操作。 有谁知道更好的解决方案?
到目前为止,这就是我所拥有的。
import app from "./app";
import { PORT } from "./config";
process.stdin.setEncoding("utf8");
let key = "";
process.stdin.on("data", data => {
key += data;
});
process.stdin.on("end", () => {
global.key = key;
if(global.key === ""){
console.log("KEY UNDEFINED");
process.exit(1);
}
app.listen(PORT, () => {
console.log(`Application started on port:${PORT}`);
});
});
我建议您使用get-stdin
模块( https://github.com/sindresorhus/get-stdin )。 基于promises
,它具有更好的界面。 您可以从stdin
获取结果,然后启动快速服务器。
getStdin().then(key => {
if(key === ""){
console.log("KEY UNDEFINED");
process.exit(1);
}
app.listen(PORT, () => {
console.log(`Application started on port:${PORT}`);
});
});
我建议您可以使用一个有趣的npm软件包之一,名为“ python-shell”及其功能,如下所示:
这是一个简单的示例:
var PythonShell = require('python-shell');
PythonShell.run('script.py', function (err,results) {
//Results : array of messages collected during execution.
if(err){
//Error handling
}
else if(results.length > 0){
//Start the server
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.