我正在处理角度和节点, 我想在客户端单击按钮时调用cli命令。命令行将调用python脚本
我看到我可以通过调用子程序和http get,并链接到nodejs / express中的休息点来完成子进程。
问题是我想发回执行http的子组件,以获取子进程的标准输出。
但是我不能成功做到这一点。
shell正确记录了stdout,以便python脚本正常工作。
这是我明确的休息终点。
app.get('/scriptPython', function (req, res) {
console.log(JSON.parse(JSON.stringify(req.query.id)))
var id = req.query.id[0]
var result=''
exec("python Internal_scraping_whorizon.py " + id , function (error, stdout, stderr) {
console.log(stdout)
result=stdout
if (error !== null) {
console.log('exec error: ' + error);
}
res.write(JSON.stringify(stdout))
});
console.log('my Result is : ' + result.toString())
res.send(result)
})
这是我的角度分量:
async selectRow(row) {
var params = new HttpParams();
var agg = [];
this.aggre.forEach(element =>
agg.push(element)
)
console.log(agg)
params = params.append('Name', row)
agg.forEach(element => {
console.log(element),
params = params.append('agg', element)
})
console.log(params)
await this.http.get('report/hotelID', {params: params}).toPromise()
.then(result => {
console.log(result), this.hotelIDS = JSON.parse(JSON.stringify(result['data'])), console.log(this.hotelIDS)
;return this.hotelIDS})
var params = new HttpParams();
this.hotelIDS.forEach(element=>{
params =params.append('id', element.HotelID)})
console.log(params)
await this.http.get('/scriptPython', {params: params}).toPromise().then(res=>{console.log(res);this.resultHorizon=res; return this.resultHorizon})
console.log(row);
console.log(this.resultHorizon['stdout'])
resultHorizon var保持为空。
我只是尝试使用stdout值初始化var,但是它不起作用。
我不知道我在使用res.send函数做对了吗。
感谢任何帮助人员!