打包的电子应用程序如何使用child_process?

时间:2018-06-05 10:19:18

标签: php node.js electron electron-packager

我已经写了电子应用程序的一部分。实际上,我使用子进程将PHP连接到Electron。 (main.js文件的代码可以在我的问题的底部找到,以保持一切清晰。)

当我使用

启动Electron应用程序时
electron ./main.js

一切正常:PHP文件正常执行。但是,这不是我想要的。我希望能够打包我的应用程序,起诉

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

执行该命令不会出错。一切顺利,所有需要的文件都被coppied到子目录。但是,当我执行创建的.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();
?>

(注意:此文件适用于包装)

0 个答案:

没有答案