“导航器”类型上不存在属性蓝牙

时间:2018-07-12 06:11:38

标签: angular web-bluetooth

我将sample code集成到了Angular 6项目中。但是有一些编译错误。这些错误之一是: 类型“导航器”上不存在属性“蓝牙”。

为什么会发生此错误,我该如何解决?

3 个答案:

答案 0 :(得分:3)

使用以下模块安装网络蓝牙api的类型。您可以用来定义导航器蓝牙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();
}

答案 1 :(得分:0)

我不确定为什么会发生此错误,但是您可以通过安装类型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);
    }
  }
}

答案 2 :(得分:0)

尝试安装以下 npm 模块:

npm install --save @types/web-bluetooth

并在代码顶部插入这一行:

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

如果您收到以下错误,请补充:

<块引用>

无法在“蓝牙”上执行“requestDevice”:必须处理用户手势以显示权限请求。

您也从用户调用中调用了蓝牙功能,例如。从按钮调用函数。