电子窗口在负载时为空白

时间:2019-03-29 13:35:25

标签: php electron

我想在电子应用程序中嵌入一些php服务器端代码。我找到了一种使php在我的应用程序中运行的有趣方法,但是在应用程序启动时我遇到了一个小问题。实际上,在我刷新之前,主窗口是空白的。是否可以刷新页面来解决此问题?

const { app, BrowserWindow } = require('electron');
const electron = require('electron');
const Menu = electron.Menu;
const path = require('path');
const url = require('url');
const os = require('os');
// PHP SERVER CREATION /////
const PHPServer = require('php-server-manager');
var php = 'php';
// if(os.platform === 'win32' && os.arch === 'ia32'){
//    php = path.resolve(__dirname)+'/php/x86/php.exe';
// }
// if(os.platform === 'win32' && os.arch === 'x64'){
//    php = path.resolve(__dirname)+'/php/x64/php.exe';
// }
const server = new PHPServer({
  php: php,
  directory: path.resolve(__dirname)+'/',
  directives: {
      display_errors: 1,
      expose_php: 0
  }
});
app.on('ready', () => {
  createWindow();
  server.run();
  mainWindow.reload();
  // if (os.platform === 'darwin') {
  // }
});

let mainWindow;

function createWindow () {
  mainWindow = new BrowserWindow({width: 1024, height: 620, });
  mainWindow.center();
  mainWindow.loadURL('http://127.0.0.1:8000/index.php');
  mainWindow.webContents.openDevTools();
  // Emitted when the window is closed.
  mainWindow.on('closed', function () {
    // PHP SERVER QUIT
      server.close();
      mainWindow = null;
    });
  }
  app.on('window-all-closed', function () {
    if (os.platform !== 'darwin') {
      // PHP SERVER QUIT
      server.close();
      app.quit();
    }
  });
  app.on('activate', function () {
    if (mainWindow === null) {
      createWindow();
    }
  });

更新:

经过研究,我找到了一种加载窗口内容的方法,空白窗口的问题与php服务器管理器模块的script参数有关。在将其指向作为我的应用程序路由器的index.php之后,内容已加载,但是现在出现两个控制台错误:jquery.min.js:1 Uncaught SyntaxError: Unexpected token < bootstrap.bundle.min.js:1bootstrap.bundle.min.js:1 Uncaught SyntaxError: Unexpected token <。如果有人现在解决该问题,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我建议尝试使您的服务器启动脱离ready-to-show事件。

mainWindow.on('ready-to-show', () => {
   server.run();
   mainWindow.show()
})