Как я могу развернуть приложение Electron, обслуживаемое локальным сервером Django? - PullRequest
1 голос
/ 04 июля 2019

Я создаю электронное приложение, которое при запуске порождает дочерний процесс на локальном сервере Django (в качестве внутренней обработки).В моей среде разработки электронное приложение работает правильно, когда я запускаю

npm start

Хотя при попытке развернуть мое приложение с

electron-packager .

Исполняемый файл не запускает сервер Django.Когда я просматриваю содержимое каталога resources / app, созданного электронным упаковщиком, я вижу virtualenv и все зависимости Django.Почему мое упакованное приложение не запускает локальный сервер, как моя среда разработки?

My package.json:

{
  "name": "AppName",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "dist": "build"
  },
  "author": "AuthorName",
  "license": "CC0-1.0",
  "devDependencies": {
    "electron-packager": "^14.0.1"
  },
  "dependencies": {
    "electron": "^5.0.6"
  }
}

Мой main.js:

// Run local Django server
var ChildProcess = require('child_process');
var DjangoServer = ChildProcess.spawn('python', ['run_server.py']);

const {app, BrowserWindow} = require('electron')
const path = require('path')

let mainWindow

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  // Load local host served by Django
  mainWindow.loadFile('https://localhost:8000')

  mainWindow.setMenuBarVisibility(false)

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
  if (mainWindow === null) createWindow()
})

// Kill local Django server
app.on('before-quit', function() {
  DjangoServer.kill('SIGINT')
})
...