Свойство bluetooth не существует по типу "Навигатор"

Я интегрировал пример кода в свой проект Angular 6. Но есть некоторые ошибки компиляции. Одна из этих ошибок: Свойство "Bluetooth" не существует для типа "Навигатор".

Почему происходит эта ошибка и как я могу ее исправить?

3 ответа

Решение

Используйте этот модуль ниже для установки типов веб-Bluetooth API. Которые вы можете использовать для определения типов объектов blutooth api навигатора.

https://www.npmjs.com/package/@types/web-bluetooth

Теперь, если вам не нужно указывать точный тип объекта навигатора (и его свойства), вы можете сделать следующее:

let mobileNavigatorObject: any = window.navigator;
if(mobileNavigatorObject && mobileNavigatorObject.bluetooth) {
  // Here write your logic of mobileNavigatorObject.bluetooth.requestDevice();
}

Я не уверен, почему возникает эта ошибка, но вы можете исправить ее, установив типы,npm install --save-dev @types/web-bluetoothи используя директиву с тройным слэшем, /// <reference types="web-bluetooth" />, вот так:

/// <reference types="web-bluetooth" />

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  title = 'myApp';

  async test() {
    try {
      const device = await navigator.bluetooth.requestDevice({
        filters: [
          {
            namePrefix: 'test',
          },
        ],
        optionalServices: ['test'],
      });
    } catch (error) {
      console.error(error);
    }
  }
}

Попробуйте установить следующий модуль npm:

npm install --save @types/web-bluetooth

и вставьте эту строку в начало вашего кода:

/// <reference types="web-bluetooth" />

Плюс, если вы получите следующую ошибку:

Не удалось выполнить «requestDevice» на «Bluetooth»: должен обрабатывать пользовательский жест для отображения запроса на разрешение.

Вы тоже вызывали функцию bluetooth из пользовательского вызова, например. вызвать функцию с помощью кнопки.

Другие вопросы по тегам