使用Angular 2启动虚拟机

时间:2018-07-24 13:29:10

标签: angular npm electron virtual-machine virtualbox

是否可以从Web应用程序启动Virtual Box VM?

我有一个安装了ubuntu的虚拟机,在Windows上作为主机。我有一个Angular(4)应用程序,我想从中启动VM。关键是要在Windows中的Web应用程序(Angular应用程序和VM都在Windows中作为主机运行)之前启动虚拟机。

要从命令行启动VM,通常使用类似以下内容的

  

C:/程序文件/Oracle/VirtualBox/VBoxManage.exe'startvm   virtualMachineName

所以我认为在json包中使用同一行会起作用:

"ng": "ng",
"start": "ng serve",
"startBackend": "'C:/Program Files/Oracle/VirtualBox/VBoxManage.exe' startvm virtualMachineName",
....
"build": "startBackend && ng build --prod",

因为我在Windows上,所以我试图绕过后挡板。

 "startBackend": "'C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe' startvm virtualMachineName",

但也不起作用。

这有可能吗?还有其他选择吗?

我目前运行

  

npm运行电子构建

当我的应用程序在电子环境下工作时,我将ng build和脚本结合起来以启动电子。然后我应该直接使用npm启动VM吗?我该怎么办?

@Zlatko提供的代码可以完美地工作,但是现在我有另一个问题。

node-virtualbox库当然仅适用于VirtualBox VM,但是其他类型的VM(如VMware)又如何呢?

到目前为止,我尝试使用node-vmrun,但我总是得到:

  

找不到vm run或false

1 个答案:

答案 0 :(得分:0)

您可以编写一个小脚本,例如在项目的tools目录中使用virtualbox包。

类似这样的东西:

const virtualbox = require('virtualbox');
virtualbox.start(process.env.VBOX_MACHINE_NAME, (err) => {
  if (err) {
    console.log('Error starting machine', err);
    process.exit(1);
  }
  process.exit();
}

然后将其添加到您的脚本中:

"startBackend": "node tools/start-vm.js",
"start": "npm run startBackend && ng build"

注意process.exit()process.exit(1)-首先,您要干净退出,并且ng构建将运行。使用第二个参数(给它一个正整数参数),您将在VM启动过程中发出错误信号,从而避免运行ng build。