首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Navigator”类型上不存在属性“wakeLock”

“Navigator”类型上不存在属性“wakeLock”
EN

Stack Overflow用户
提问于 2022-03-19 13:43:41
回答 2查看 612关注 0票数 2

我需要在我的角度应用程序中使用屏幕锁定API

这是我的密码

代码语言:javascript
复制
if ('wakeLock' in navigator) {
         await navigator.wakeLock.request();
        
}

但是,角编译失败,有以下错误:

代码语言:javascript
复制
Error: src/app/feature/test/test/test.component.ts:20:42 - error TS2339: Property 'wakeLock' does not exist on type 'Navigator'.

角度版本和信息

代码语言:javascript
复制
     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI: 13.0.3
Node: 16.13.0
Package Manager: npm 8.1.0
OS: win32 x64

Angular: 13.0.2
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.3
@angular-devkit/build-angular   13.0.3
@angular-devkit/core            13.0.3
@angular-devkit/schematics      13.0.3
@angular/cdk                    13.0.3
@angular/cli                    13.0.3
@angular/flex-layout            13.0.0-beta.36
@angular/material               13.0.3
@schematics/angular             13.0.3
rxjs                            6.6.7
typescript                      4.4.4

如何修改类型记录以包含屏幕锁定API并编译代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-08 05:40:59

最后,两周后,我找到了一种通过添加DefinitelyTyped来支持此功能的方法。两步就能解决这个问题。

  1. 安装@types/dom-screen-wake-lock

代码语言:javascript
复制
npm i @types/dom-screen-wake-lock -D

  1. 安装软件包后,必须向tsconfig.json添加类似于

的类型

代码语言:javascript
复制
{
...
   "compilerOptions":{
...
         "types":[
...
              "dom-screen-wake-lock"
...
            ]
...
}
...
}
票数 2
EN

Stack Overflow用户

发布于 2022-04-07 14:05:48

我就是这么做的:

代码语言:javascript
复制
const anyNav: any = navigator
if ('wakeLock' in navigator) {
  anyNav["wakeLock"].request("screen")
}

我首先尝试添加DefinitelyTyped定义,它修复了编辑器抛出的错误,但仍然导致编译失败。这就成功了,基本上我们将导航器保存到任意类型变量,它允许我们调用任何属性或方法,而无需类型检查。

if语句允许在尝试调用它之前检查浏览器是否支持call。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71538643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档