Свойство 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 из пользовательского вызова, например. вызвать функцию с помощью кнопки.