2017-07-19 96 views
0

我有以下情況:我有一個Angular CLI應用程序,它由npm start啓動。此操作可能需要一些時間才能完成。開始後,該應用程序在localhost:3000上可用。 然後,我們有一個Electron應用程序(使用nativefier模塊製作),它使得應用程序脫離url localhost:3000。 當我使用批處理文件啓動Angular應用程序並且使用Electron應用程序時,會出現問題。很明顯,由於NPM啓動尚未完成,Electron應用程序將顯示錯誤。另一方面,我不能順序執行NPM start和app,因爲最終用戶不應該看到NPM start的CMD窗口(我用VBS腳本隱藏)。 理想情況下,最好的解決方案是Electron應用程序和npm開始並行啓動,而Electron應用程序會在啓動NPM時顯示加載屏幕。如何使Electron等待npm開始完成

我幾乎不知道如何做到這一點。

有人可以解決我的問題嗎?

感謝 法比奧

+1

最終用戶和npm開始?你爲什麼不用電子包裝你的應用程序,並把它交給最終用戶? –

回答

1

我找到的解決方案包括具有兩個不同的窗口,並和他們一起玩,隱藏的第一個,並顯示第二個時,後者已經準備好......所以,想象一下你想展示Google.com等待本地主機準備就緒

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

let win 
let win2 
function createWindow() { 
    let win = new BrowserWindow({backgroundColor: '#2e2c29'}) 
    win = new BrowserWindow({width: 800, height: 600, show:false}) 
    win2 = new BrowserWindow({width: 800, height: 600}) 

    win.loadURL('http://localhost:3000') 
    win2.loadURL('http://www.google.com') 

    win.once('ready-to-show',() => {  
    win.show() 
    win2.hide() 
    win2.close() 
})  

    win.on('closed',() => { 

    win = null 
    }) 
} 

app.on('ready', createWindow) 

app.on('window-all-closed',() => { 

    if (process.platform !== 'darwin') { 
    app.quit() 
    } 
}) 
app.on('activate',() => { 

    if (win === null) { 
    createWindow() 
    } 
})