navigator.mediadevices.enumeratedevices is not a function,本地 https 证书

在调试本地WebRTC项目时遇到navigator.mediaDevices.enumeratedevices不是函数的错误,由于WebRTC仅在HTTPS环境下支持,故需通过mkcert生成本地证书,并替换browser-sync的certs文件,然后以HTTPS方式启动项目,以使其他设备能通过IP访问并避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

需要其他电脑上调试本地项目。

我是在开发电脑上启动本地项目,使用 browser-sync 代理,让其他电脑通过 IP 访问,例如:http://x.x.x.x:3001

这样是可以在其他电脑上访问到我的本地项目,可是报错 navigator.mediadevices.enumeratedevices is not a function 。原因如下:

WEBRTC is not supported in HTTP site and it is supported only in HTTPS site

就是说需要使用下面的源才能使用 navigator.mediadevices.enumeratedevices

(https, , *)
(wss, *, *)
(, localhost, )
(, .localhost, *)
(, 127/8, )
(, ::1/128, *)
(file, *, —)
(chrome-extension, *, —)

参考:

### 如何使用 `navigator.mediaDevices.enumerateDevices()` 枚举媒体设备 `navigator.mediaDevices.enumerateDevices()` 是用于枚举用户可访问的多媒体输入输出设备的方法,返回的是一个 Promise 对象。此方法可以用来获取当前用户的音频和视频输入输出设备列表。 #### 获取设备列表并打印基本信息 下面是一个简单的例子来展示如何调用 `enumerateDevices()` 并处理其结果: ```javascript navigator.mediaDevices.enumerateDevices() .then(function (devices) { devices.forEach(function (device) { console.log(`Kind: ${device.kind}, Label: ${device.label}, Device ID: ${device.deviceId}`); }); }) .catch(function (err) { console.error(`Error occurred: ${err.name}: ${err.message}`); }); ``` 这段代码尝试列举所有的媒体设备,并将每种类型的设备信息(种类、标签以及唯一标识符)记录到控制台中[^1]。 #### 处理不同类型的设备 为了更具体地操作特定类型的设备,比如只关心摄像头或麦克风的信息,可以在遍历过程中加入条件判断语句: ```javascript navigator.mediaDevices.enumerateDevices() .then(function (devices) { const audioInputs = []; const videoInputs = []; devices.forEach(function (device) { if (device.kind === "audioinput") { audioInputs.push({ label: device.label, deviceId: device.deviceId }); } else if (device.kind === "videoinput") { videoInputs.push({ label: device.label, deviceId: device.deviceId }); } }); console.log('Audio Inputs:', audioInputs); console.log('Video Inputs:', videoInputs); }) .catch(function (err) { console.error(`Error occurred: ${err.name}: ${err.message}`); }); ``` 这里分别创建了两个数组存储来自同一类别的设备信息——一个是音频输入源,另一个是视频输入源。这样可以根据实际需求进一步筛选所需的数据[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值