我目前正在构建一个接受python脚本输入的节点应用程序。我们计划做一个像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}`);
});
});
答案 0 :(得分:0)
我建议您使用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}`);
});
});
答案 1 :(得分:0)
我建议你可以使用一个名为“python-shell”的有趣的npm包及其功能如下:
这是一个简单的例子:
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
}
});