Can't resolve 'child_process'

Question:

I am currently on the backend of my software which runs via electron but I can’t get the data. So I tried to retrieve the data from a python program that sends it using Flask, but when I run the npm start command it gives me the following error message:

Module not found: Error: Can't resolve 'child_process' in 'C:UserscantrDesktopStage ingénieur KOMILFO SPORTSail VisionReactreact-electronsrcpages'

Here is my Javascript and python script:

JS:

import React from "react";

class Home extends React.Component {
    constructor() {
        super();
        this.hello = require("child_process").spawn("python", ["./hello.py"]);
        this.state = { fs_s5: 12 };
        this.hello.stdout.on('data', (data) => {
          this.setState({ fs_s5: data });
        });
    }
    render(){
        return(
        <div>
            <div class="home">
                <div class="template-1" id="temp1">
                <div class="panel-1">
                    <div class="panel-header">
                    <h1>Panel 1</h1>
                    <i class='bx bx-cog modal-trigger-panel'></i>
                    </div>
                    <div class="panel-body">
                    <div class="sec-5 modal-trigger-data" id="hs-sec-5">
                        <span class="h1" id="h1-fs-s5">{this.state.fs_s5}</span>
                        <h2>TWIST</h2>
                        <h3>s5</h3>
                    </div>
                    <div class="sec-4 modal-trigger-data" id="hs-sec-4">
                        <h1>--</h1>
                        <h2>TWIST</h2>
                        <h3>s4</h3>
                    </div>
                    <div class="sec-3 modal-trigger-data" id="hs-sec-3">
                        <h1>--</h1>
                        <h2>TWIST</h2>
                        <h3>s3</h3>
                    </div>
                    <div class="sec-2 modal-trigger-data" id="hs-sec-2">
                        <h1>--</h1>
                        <h2>TWIST</h2>
                        <h3>s2</h3>
                    </div>
                    <div class="sec-1 modal-trigger-data" id="hs-sec-1">
                        <h1>--</h1>
                        <h2>TWIST</h2>
                        <h3>s1</h3>
                    </div>
                    </div>
                </div>
                </div>
            </div>
        </div>    
        );
    }
}

export default Home;

Python:

from __future__ import print_function
import time
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World! This is powered by Python backend."

if __name__ == "__main__":
   print(12)
   time.sleep(5)
   app.run(host='127.0.0.1', port=5000)

Regards,

Asked By: Feyto

||

Answers:

Try to add the following in your package.json file:

{
  ...
  // add this to package.json 
  "browser": {
    "child_process": false
  }
}
Answered By: Stanley Ulili

The error message you’re receiving is because the child_process module is not a built-in module in Node.js, and it is not part of the dependencies of your project. child_process is a module in Node.js that allows you to spawn new processes, execute external commands, and manage child processes.

To fix this issue, you need to install the child_process module by running the following command in your project’s root directory:

npm install child_process

It should work after installing the child_process module.
Also, the python script you’ve shared only runs a flask server on localhost, port 5000. But you’re trying to get data from it via child_process.spawn, which is trying to run the python script as a child process. However, the python script is not returning any data to the child process, it’s just running a web server and waiting for requests.
You should modify your python script to return the data you want to display in your frontend.

You can also consider using http request library like Axios or Fetch to get the data from python flask server.

Answered By: Arshad