In my project that I created with Electron, there is a server side written in NodeJS and a frontend side written in ReactJS. When I built the project, ran setup.exe and installed the application, I saw that the server side was not working. how do I fix this? here is electron.js ;
const electron = require("electron");
const path = require("path");
const { exec } = require("child_process");
const isDev = require("electron-is-dev");
const { app, BrowserWindow } = electron;
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 1000,
height: 800,
icon: path.join(__dirname, "../assets/logo.ico"),
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
});
mainWindow.loadURL(
isDev
? "http://localhost:3000"
: `file://${path.join(__dirname, "../build/index.html")}`
);
mainWindow.on("closed", () => (mainWindow = null));
}
app.on("ready", () => {
const serverPath = isDev
? path.join(__dirname, "../src/server.js")
: path.join(process.resourcesPath, "server.js");
exec(`node ${serverPath}`, (error, stdout, stderr) => {
if (error) {
console.error(`Error starting server: ${error.message}`);
console.error(`Error code: ${error.code}`);
console.error(`Error signal: ${error.signal}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
}
console.log(`stdout: ${stdout}`);
});
createWindow();
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
if (mainWindow === null) {
createWindow();
}
});
and here is my package.json ;
{
"name": "Slicense",
"version": "0.1.0",
"description": "Simple boilerplate for developing an Electron app with React",
"author": "Tübitak SAGE",
"build": {
"appId": "react.electron",
"productName": "Slicense",
"win": {
"icon": "assets/logo.png",
"target": "nsis",
"artifactName": "Slicense-Setup.exe"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"include": "build/installer.nsh"
},
"extraResources": [
{
"from": "src/server.js",
"to": "server.js"
}
]
},
"main": "public/electron.js",
"homepage": "./",
"private": true,
"dependencies": {
"@coreui/coreui-pro": "^4.5.0",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.1.0",
"@coreui/react-chartjs": "^2.1.3",
"@coreui/react-pro": "^4.12.0",
"@coreui/utils": "^2.0.2",
"bootstrap-icons": "^1.11.3",
"child_process": "^1.0.2",
"cors": "^2.8.5",
"cross-env": "^6.0.3",
"electron-is-dev": "^1.1.0",
"express": "^4.19.2",
"express-fileupload": "^1.5.0",
"file-saver": "^2.0.5",
"path": "^0.12.7",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-router-dom": "^5.1.2",
"react-scripts": "3.2.0"
},
"scripts": {
"start-react": "react-scripts --openssl-legacy-provider start",
"build-react": "react-scripts --openssl-legacy-provider build",
"test-react": "react-scripts test --env=jsdom",
"eject-react": "react-scripts eject",
"build-electron": "electron-builder",
"build": "yarn build-react && yarn build-electron -w",
"start": "concurrently "cross-env BROWSER=none yarn start-react" "wait-on http://localhost:3000 && electron .""
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"concurrently": "^5.0.0",
"electron": "^7.1.0",
"electron-builder": "^22.1.0",
"wait-on": "^3.3.0"
}
}