是否可以从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-vmrun,但我总是得到:
找不到vm run或false
答案 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。