我已经在电子应用程序上工作了几天。当我昨天完成一天的工作时,程序运行良好。我今天早上又来了,开始研究它,现在突然在程序中途,它现在只是白屏。从上次(上次已知的工作(到当前时间,我没有更改任何内容。
运行npm start
后,我没有看到任何错误被记录到 powershell 控制台(程序也无法打包工作(,当我使用 inspect 元素时,它只是说:
DevTools 已与页面断开连接。
重新加载页面后,开发人员工具将自动重新连接。
但它只是永远停留在这个白页上。
这个页面有很多代码(531行(,但我完全无法查明问题所在,因为没有记录任何错误。也就是说,我开始从我的代码中取出一些片段,试图让它工作,并且我能够将其缩小到下面的代码。
我该怎么做才能修复我的应用程序?
这是我缩小范围的代码,当我注释掉这段代码时,页面运行良好。
var audio = require('win-audio').speaker;
奇怪的是,这是我在应用程序的此页面中编写的第一段代码之一,它一直工作到今天。
我刚刚发现,如果我插入一些扬声器,程序就不再是白屏了。但这不是一个很好的解决方案,因为该程序每天将在数百台计算机上运行,这些计算机可能有也可能没有扬声器。
更新::
好的,我想我已经修复了它。要试用一下:
- 下载我的分叉: https://github.com/11AND2/win-audio
- 在您的终端中将目录 (cd( 更改为目录,例如"cd C:\...\win-audio">
- 运行命令"npm run install" - 这将重建模块
- 要测试它,请运行"节点样本.js"并激活/禁用音频设备
如果您想在任何时候检查设备是否处于活动状态,只需运行
var audio = require('win-audio').speaker;
var _vol_alive = audio.get();
if (_vol_alive === -999) {
console.log("this device is dead :-(");
}
在您的应用程序中。请注意,我根本没有更改 API,因此无需更改您的应用程序代码。
如果修复程序适合您,请提醒我,以便我可以为修复程序创建拉取请求。我不是这个插件的创建者,我所有的更改都是公共领域。
荒废的::
好的,我已经为您找到了解决方案。如果可以吗:
var audio = require('win-audio').speaker;
如果未找到设备,则返回 -1?
所以你可以做:
if (audio !== -1) {
audio.set(30);
}
请给我一个简短的提示,我将发布实施路线。