我想在电子应用程序中嵌入一些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:1
和bootstrap.bundle.min.js:1 Uncaught SyntaxError: Unexpected token <
。如果有人现在解决该问题,我将不胜感激。
答案 0 :(得分:1)
我建议尝试使您的服务器启动脱离ready-to-show
事件。
mainWindow.on('ready-to-show', () => {
server.run();
mainWindow.show()
})