Как упакованное электронное приложение может использовать child_process? - PullRequest
0 голосов
/ 05 июня 2018

Я уже написал часть электронного приложения.Фактически я подключил PHP к Electron, используя дочерний процесс.(Код файла main.js, который делает это, можно найти внизу моего вопроса, чтобы все было ясно).

Когда я запускаю свое приложение Electron, используя

electron ./main.js

все работает хорошо: файл PHP выполняется правильно.Но это не то, что я хочу.Я хочу иметь возможность упаковать свое приложение, предъявив иск

electron-packager --electron-version=2.0.2 . --platform=win32 --arch=x64

Выполнение этой команды не дает ошибок.Все идет хорошо, и все необходимые файлы копируются в подкаталог.Но когда я запускаю созданный файл .exe, он не показывает ничего полезного.Только пустая страница.

Может ли кто-нибудь помочь мне и дать мне некоторые ресурсы, которые могут помочь мне немного дальше?Я уже искал в Интернете решение и болтал по каналу Electron SLACK, но ответа там не получил.В Slack это было потому, что я не был достаточно быстр, чтобы ответить, так как я был занят ... И я не нашел ничего полезного в Интернете.

Я надеюсь, что кто-то здесь может дать мне немногосоветы, чтобы я мог искать в лучшем направлении.

А теперь, как и обещал код файла .main.js:

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

let window;

function createWindow()
{
    const { execFile } = require('child_process');
    const child = execFile('php/php.exe', ['-S', '127.0.0.1:4911', '-t', 
    './www'], (error, stderr, stdout) => {
        if (error) { console.log(error); }
        if (stderr) { console.log(stderr); }
    });
    window = new BrowserWindow({width: 800, height: 600});
    window.loadURL(url.format({
           pathname: 'localhost:4911',
        protocol: 'http:',
        slashes: true
    }));

    window.on('closed', () => {
                window = null;
    });
}

app.on('ready', createWindow);

app.on('winow-all-closed', () => {
    if(process.platform !== "darwin") {
        app.quit();
    }
});

app.on('activate', () => {
    if(window == null) {
        createWindow();
    }
});

Содержимое ./www.Файл /index.php, на который ссылается child_process:

<?php
phpinfo();
?>

(Примечание: этот файл работает без упаковки)

...