Я пытаюсь заставить мое приложение activjs взаимодействовать со скриптом Python (который выполняет команду оболочки).
Вот мой скрипт Python:
import subprocess, sys
fid = sys.argv[1]
p = subprocess.Popen(['date'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
(output, err) = p.communicate()
print(output.decode('ascii'))
sys.stdout.flush()
Вот функция javascript:
export function getData(fid) {
const {spawn} = require("child_process");
const pythonProcess = spawn('python', ['./getEpv.py', fid]);
pythonProcess.stdout.on('data', (data) => { // Code is stuck here
console.log('Data output: ', data.toString());
return data;
});
}
Вот мой экспресс-бэкэнд, который вызывает метод getData ():
app.get('/getAPIToken', (req, res) => {
console.log('getData: ', getEpv('XXX'));
res.send({data: getData('XXX')});
// res.send({data: 'TEST'});
});
Мой URL-адрес бэкенда вызывается методом оболочки:
export default function callData() {
return axios.get('/getAPIToken');
}
Наконец, в моем App.js я написал следующее:
callData().then(response => {
console.log('response: ', response);
});
Код застрял на: pythonProcess.stdout.on('data', (data) => {
, и я не уверен, что я сделал неправильно.и файл javascript, и файл python находятся в одном каталоге.