使用 Angular 启动虚拟机 2

Start Virtual Machine with Angular 2

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

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

要从命令行启动虚拟机,我通常使用类似的东西:

C:/Program Files/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 run electron-build

我将 ng build 与脚本结合起来启动 electron,因为我的应用程序在 electron 中运行。我应该直接用 npm 启动 VM 吗?我该怎么做?

@Zlatko 提供的代码完美运行,但现在我有另一个问题。

node-virtualbox 库当然只适用于 VirtualBox VM,但是其他类型的 VM,比如 VMware 呢?

到目前为止,我尝试了 node-vm运行,但我总是得到:

vm run not found or false

你可以写一个小脚本,比如在项目的 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.