Я пытаюсь создать электронное приложение, которое запустит образец BrowserWindow
с некоторым содержанием. В то же время приложение создаст дочерний процесс сервера express, который будет доступен пользователю (через браузер - примерная ссылка: http://localhost: 9000 / ). Все работает как чудо, когда я запускаю его локально через npm start
.
Проблема возникает, когда я пытаюсь собрать свое приложение, используя electron-builder
to windows portable exe. Когда я открываю этот exe-файл (расположенный после сборки в dist / ), появляется электрон BrowserWindow
, но я не могу добраться до API express в моем браузере. ОДНАКО, когда я go в dist / win-unpacked и запускаю exe, существующий там, я получаю BrowserWindow
, и я могу открыть http://localhost: 9000 / в моем браузере. Есть идеи как это возможно и самое главное как это исправить?
Мой пакет. json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "electron .",
"package": "electron-builder build --win"
},
"build": {
"appId": "test",
"productName": "test",
"copyright": "Copyright © 2019 ${author}",
"files": [
"./index.js",
"./index.html",
"./express.js",
"node_modules/**/*"
],
"win": {
"target": [
"portable"
]
},
"directories": {
"buildResources": "assets"
}
},
"keywords": [],
"author": "John Doe",
"license": "ISC",
"devDependencies": {
"electron": "^8.2.5",
"electron-builder": "^22.6.0",
"express": "^4.17.1"
}
}
Мой индекс. js:
const { app, BrowserWindow } = require('electron')
const server = require('child_process').fork(`${__dirname}/express.js`);
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
win.loadFile('index.html')
win.webContents.openDevTools()
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
My express. js:
(function () {
const express = require("express");
const app = express();
const PORT = 9000;
app.get('/', (req, res) => {
res.json({
response: "OK"
});
});
app.listen(PORT, "localhost", () => {
console.log(`Web server started successfully (port: ${PORT})`);
});
}());