So im trying to get info i get from my python script exposed on a tunnel i made using ngrok but for some reason i cant seem to make it appear on the set route anyone who knows why ? it writes to the output file but i tried consol logging it nothing works and i try to understand why the text from the output is not being stored and updated on the tunnel
const express = require('express');
const { spawn } = require('child_process');
const fs = require('fs');
const app = express();
const port = 4000;
let lastDeliveryMessage = '';
app.use(express.json());
app.post('/execute-script', async (req, res) => {
try {
const { naam } = req.body;
// Ensure naam is provided
if (!naam) {
return res.status(400).json({ success: false, message: 'No naam provided' });
}
// Execute the Python script
await executeScript(naam);
// Wait a bit before reading the file to ensure that the Python script has completed writing
await new Promise(resolve => setTimeout(resolve, 30000)); // Wait for 1 second
// Read the delivery message from output.txt
const deliveryMessage = readDeliveryMessage();
console.log('Read delivery message:', deliveryMessage);
// Check if a valid message was retrieved
if (!deliveryMessage) {
return res.status(500).json({ success: false, message: 'No delivery message received from script' });
}
lastDeliveryMessage = deliveryMessage;
res.json({ deliveryMessage });
} catch (error) {
console.error('An error occurred during script execution:', error);
res.status(500).json({ success: false, message: 'Script execution failed', error: error.message });
}
});
const executeScript = (naam) => {
return new Promise((resolve, reject) => {
const pythonProcess = spawn('python', ['C:\\Users\\Dell\\Desktop\\levertijdside\\levertijd.py', naam]);
pythonProcess.on('error', (error) => {
console.error('An error occurred during script execution:', error);
reject(error);
});
pythonProcess.on('close', (code) => {
if (code === 0) {
resolve();
} else {
reject(new Error(`Script execution failed with error code ${code}`));
}
});
});
};
app.get('/get-delivery-message', (req, res) => {
if (lastDeliveryMessage) {
res.json({ message: lastDeliveryMessage });
} else {
res.status(404).json({ message: 'No last delivery message available' });
}
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
const readDeliveryMessage = () => {
const filePath = 'C:\\Users\\Dell\\Desktop\\levertijdside\\output.txt';
try {
if (fs.existsSync(filePath)) {
console.log('Reading from:', filePath);
const deliveryMessage = fs.readFileSync(filePath, 'utf8');
console.log('Delivery message:', deliveryMessage);
return deliveryMessage.trim();
} else {
console.log(`File does not exist at: ${filePath}`);
return null;
}
} catch (error) {
console.error('An error occurred while reading the delivery message:', error);
return null;
}
};
Via Active questions tagged javascript - Stack Overflow https://ift.tt/UVk9zZ7
Comments
Post a Comment