node.js - Electron Error running server node js where packaging - Stack Overflow

i have a problem to connect with server when using electron builder so i guess the electron cant find t

i have a problem to connect with server when using electron builder so i guess the electron cant find the server file server.js in the root there is client server folders and main.js package.json

main.js

const { app, BrowserWindow } = require("electron");
const path = require("path");
const { spawn } = require("child_process");
const url = require("url");

let mainWindow;
let serverProcess;

// Helper function to get the correct path for different platforms
function getIndexPath() {
  return path.join(__dirname, "client", "dist", "index.html");
}

// Function to create the main window
function createWindow() {
  // Create Electron window
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true,
    },
  });

  // Load the React app using a file URL (this is crucial for proper path resolution)
  const indexPath = getIndexPath(); // Get the path dynamically
  mainWindow.loadURL(
    url.format({
      pathname: indexPath,
      protocol: "file:",
      slashes: true,
    })
  );

  // For debugging
  mainWindow.webContents.openDevTools();

  // Handle window close
  mainWindow.on("closed", () => {
    mainWindow = null;
  });
}

// Function to start the backend server
function startServer() {
  const serverScript = path.join(__dirname, "server", "src", "server.js");
  const serverProcess = spawn("node", [serverScript]);

  serverProcess.stdout.on("data", (data) => {
    console.log(`Server stdout: ${data}`);
  });

  serverProcess.stderr.on("data", (data) => {
    console.error(`Server stderr: ${data}`);
  });

  serverProcess.on("close", (code) => {
    console.log(`Server process exited with code ${code}`);
  });

  return serverProcess;
}

// On app ready, start the server and create the window
app.on("ready", () => {
  console.log("Starting application...");

  // Start the Node.js backend server
  serverProcess = startServer();

  // Create the Electron window
  createWindow();
});

// Quit the app when all windows are closed (except on macOS)
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    if (serverProcess) {
      serverProcess.kill();
    }
    app.quit();
  }
});

// Recreate window on activate (macOS behavior)
app.on("activate", () => {
  if (mainWindow === null) {
    createWindow();
  }
});

// Handle cleanup on quitting the app
app.on("will-quit", () => {
  if (serverProcess) {
    serverProcess.kill();
  }
});

server.js

import express from "express";
import cors from "cors";
import { fetchPlc, insertData } from "./utils/db.js";

const app = express();
app.use(
  cors({
    origin: "*",
  })
);
app.use(express.json());
app.get(`/schema/:plc`, (req, res) => {
  const { plc } = req.params;
  const operandeTableData = fetchPlc(plc);
  return res.send(operandeTableData);
});
app.post(`/schema`, (req, res) => {
  const result = insertData(req.body.jsonData, req.body.ImportType, req.body.plc);

  if (result.success) {
    return res.status(200).json({ message: "Data inserted successfully" });
  } else {
    return res.status(500).json(result); // Send the error details as JSON
  }
});

app.listen(5000, () => {
  console.log("server is running on port 5000");
});

package.json

{
  "name": "fofo",
  "version": "1.0.0",
  "main": "main.js",
  "description": "Your app description",
  "author": {
    "name": "Your Name",
    "email": "[email protected]"
  },
  "scripts": {
    "start": "electron .",
    "build": "electron-builder"
  },
  "devDependencies": {
    "electron": "^35.0.3",
    "electron-builder": "^25.1.8"
  },
  "dependencies": {
    "child_process": "^1.0.2",
    "electron-is-dev": "^3.0.1"
  },
  "build": {
    "appId": "com.sonasid.fofo",
    "productName": "fofo",
    "directories": {
      "output": "dist"
    },
    "files": [
      "client/dist/**/*",
      "server/**/*",
      "main.js",
      "package.json"
    ],
    "extraResources": [
      {
        "from": "data.sqlite",
        "to": "data.sqlite"
      }
    ],
    "win": {
      "target": "nsis"
    },
    "linux": {
      "target": "deb",
      "category": "Utility"
    },
    "mac": {
      "target": "dmg"
    }
  }
}

project-root/
├── client/
│   └── dist/
│       └── index.html
├── server/
│   └── src/
│       ├── server.js
│       └── utils/
│           ├── db.js
│           └── other-utility-files.js
├── data.sqlite
├── main.js
├── package.json
├── node_modules/
└── dist/  (output directory for build artifacts react)

package.json

{
  "name": "fofo",
  "version": "1.0.0",
  "main": "main.js",
  "description": "Your app description",
  "author": {
    "name": "Your Name",
    "email": "[email protected]"
  },
  "scripts": {
    "start": "electron .",
    "build": "electron-builder"
  },
  "devDependencies": {
    "electron": "^35.0.3",
    "electron-builder": "^25.1.8"
  },
  "dependencies": {
    "child_process": "^1.0.2",
    "electron-is-dev": "^3.0.1"
  },
  "build": {
    "appId": "com.sonasid.fofo",
    "productName": "fofo",
    "directories": {
      "output": "dist"
    },
    "files": [
      "client/dist/**/*",
      "server/**/*",
      "main.js",
      "package.json"
    ],
    "extraResources": [
      {
        "from": "data.sqlite",
        "to": "data.sqlite"
      }
    ],
    "win": {
      "target": "nsis"
    },
    "linux": {
      "target": "deb",
      "category": "Utility"
    },
    "mac": {
      "target": "dmg"
    }
  }
}

i tried to resolve correctly the path but nothing work . the app work but i need to manually start the server .also i had problem with platforms`

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744276334a4566347.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信