javascript - 在 Electron 应用程序中访问 USB 记忆棒失败,原因是:未选择设备异常
问题描述
您好,我正在尝试从用 reactjs 编写的电子应用程序访问 USB 棒。
由于电子是谷歌铬,我认为我可以使用 USB Web-Api:https ://developer.mozilla.org/en-US/docs/Web/API/USB
所以我创建了一个这样的组件:
import React from 'react';
const UsbAccessButton = () => (
<button
className="usb-access-button"
onClick={() => {
navigator.usb
.requestDevice({ filters: [{ vendorId: 0x0951 }] })
.then(device => {
console.log(device.productName);
console.log(device.manufacturerName);
})
.catch(error => {
console.log(error);
});
}}
>
Get USB Access
</button>
);
export default UsbAccessButton;
vendorId 是我的特定 USB 记忆棒的正确名称。但是当我单击按钮时,我收到如下错误:
DOMException: No device selected. usb-access-button.component.jsx:14
但我想列出可用的设备,以便用户可以选择。所以也许我不理解文档的某些部分或者是什么导致了这里的问题?
更新:当我在我的默认 chrome 浏览器中运行这个应用程序时,我得到了在 USB 设备之间进行选择的对话。所以看起来这个错误更多地与电子本身有关。
解决方案
目前(2020 年 1 月)不可能在 Electron 中为 WebUSB 提供设备选择器 - 请参阅此处的问题:https ://github.com/electron/electron/issues/14545
目前建议的解决方案是使用thegecko/webusb polyfill,它使用node-usb 库。
推荐阅读
- python - 使用 Numpy 向量化三个嵌套循环
- node.js - 使用 Express 后处理 Sequelize finder
- nearprotocol - 如何将near-cli创建的密钥导入NEAR Wallet?
- docusignapi - 签名字段未显示在收件人方的文档签名模板中
- python - 熊猫:groupby unstack,重复索引错误
- typescript - Typescript 中 ()=>any 和 {():any} 有什么区别
- c# - 如何在 ASP.NET Core MVC 中提交动态数量的字符串输入
- next.js - Next.js 10版内置Image组件无法加载
- php - Authorize.net api 调用的问题开始返回 null
- python - __init__.py 需要导入才能在 Pytest 中工作。但是使用 Python 3.8