我正在Visual中编写一个.Net核心/角8应用程序。
在应用程序的角(ClientApp)部分中,我的node_modules包含TypeScript 3.5.3,它在lib.dom.d.ts中定义如下
interface NavigatorUserMedia {
readonly mediaDevices: MediaDevices;
getDisplayMedia(constraints: MediaStreamConstraints): Promise<MediaStream>;
getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void;
}因此,我应该能够调用navigator.getDisplayMedia(...),然而,当我尝试这样做时,我在它下面得到一条红线,表示getDisplayMedia不是导航器的函数。
因此,我点击了navigator的"Go To Definition“,它带我到了C:\Program Files (x86)\Microsoft SDKs\TypeScript中定义的TypeScript,它显然是TypeScript 3.8.3。这似乎也是在Properties > TypeScript Build下定义的"TypeScript版本“。在lib.dom.d.ts文件中,似乎绝对没有任何getDisplayMedia函数。
我试图使用NuGet下载TypeScript 3.5.3,它正确地更改了Properties > TypeScript Build下的TypeScript版本,并删除了允许正确构建项目的红线。但是,当试图调用函数时,一个错误输出到浏览器控制台,说明getDisplayMedia不是导航器的函数.
见鬼这是怎么回事?
注意:我知道getDisplayMedia应该从MediaDevices调用。但是,在lib.dom.d.ts中,对于TypeScript 3.5.3和3.8.3,MediaDevices不包含getDisplayMedia。
发布于 2020-07-18 08:50:34
不过,这似乎是TypeScript的一个活跃问题:
https://github.com/microsoft/TypeScript/issues/33232
当前的解决方法是手动定义mediaDevices:
const mediaDevices = navigator.mediaDevices as any;
const stream = await mediaDevices.getDisplayMedia();发布于 2021-11-04 19:44:52
https://stackoverflow.com/questions/62966395
复制相似问题