Сбой при получении доступа к USB-накопителю в приложении Electron: исключение для выбранного устройства - PullRequest
0 голосов
/ 16 января 2020

Здравствуйте, я пытаюсь получить доступ к USB-флешке из электронного приложения, написанного на reactjs.

Поскольку электрон - это хром Google, я подумал, что могу использовать 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 правильный для моей спецификации c USB-накопитель. Но когда я нажимаю на кнопку, я получаю сообщение об ошибке:

DOMException: No device selected.       usb-access-button.component.jsx:14

Но я хочу перечислить доступные устройства, чтобы пользователь мог выбирать между ними. Поэтому, может быть, я не понял некоторые части документации или что вызывает проблемы здесь?

ОБНОВЛЕНИЕ: Когда я запускаю это приложение в своем браузере по умолчанию chrome, я получаю диалог для выбора между USB-устройствами. Похоже, эта ошибка больше связана с самим электроном.

1 Ответ

1 голос
/ 17 января 2020

В настоящее время (январь 2020 г.) невозможно выбрать устройство для WebUSB в Electron - см. Проблему здесь: https://github.com/electron/electron/issues/14545

На данный момент предлагаемое решение состоит в том, чтобы используйте полифилл thegecko / webusb , который вместо этого использует библиотеку node-usb.

...