Skip to main content

Node.js exposing information from python script to ngrok for a get request

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

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console