Electron app with Express + Python child processes not running in macOS production build

Hi all,

I’ve built an Electron application that uses two child processes:

An Express.js server

A Python executable (packaged .exe/binary)

During the development phase, everything works fine — the Electron app launches, both child processes start, and the app functions as expected.

But when I create a production build for macOS, the child processes don’t run.

Here’s a simplified snippet from my electron.mjs:

import { app, BrowserWindow } from "electron"; import { spawn } from "child_process"; import path from "path";

let mainWindow;

const createWindow = () => { mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: true, }, });

mainWindow.loadFile("index.html");

// Start Express server const serverPath = path.join(process.resourcesPath, "app.asar.unpacked", "server", "index.js"); const serverProcess = spawn(process.execPath, [serverPath], { stdio: "inherit", });

// Start Python process const pythonPath = path.join(process.resourcesPath, "app.asar.unpacked", "python", "myapp"); const pythonProcess = spawn(pythonPath, [], { stdio: "inherit", });

serverProcess.on("error", (err) => console.error("Server process error:", err)); pythonProcess.on("error", (err) => console.error("Python process error:", err)); };

app.whenReady().then(createWindow);

I’ve already done the following:

Configured package.json with the right build settings

Set up extraResources / asarUnpack to include the server and Python files

Verified both child processes work standalone

Questions:

What’s the correct way to package and spawn these child processes for macOS production builds?

Do I need to move them into a specific location (like Contents/Resources/app.asar.unpacked) and reference them differently?

Is there a more reliable pattern for handling Express + Python child processes inside an Electron app bundle?

Any insights or working examples would be really appreciated!

Electron app with Express + Python child processes not running in macOS production build
 
 
Q