如何使电子等待npm开始完成

时间:2017-07-19 20:41:43

标签: angularjs node.js electron

我有以下情况:我有一个Angular CLI应用程序,它由npm start启动。此操作可能需要一些时间才能完成。启动后,该应用程序可在localhost:3000获得。 然后我们有一个Electron应用程序(使用nativefier模块制作),它使用url localhost:3000创建一个应用程序。 当我使用批处理文件启动Angular应用程序并同时启动Electron应用程序时,会出现问题。显然,由于NPM启动尚未完成,Electron应用程序将显示错误。另一方面,我无法按顺序执行NPM启动和应用程序,因为最终用户不应该看到NPM启动的CMD窗口(我用VBS脚本隐藏)。 理想情况下,最好的解决方案是电子应用程序和npm开始并行启动,电子应用程序会在NPM启动时显示加载屏幕。

我真的不知道如何实现这一目标。

有人能解决我的问题吗?

由于 法比奥

1 个答案:

答案 0 :(得分: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()
  }
})