chrome 报错 navigator.mediaDevices is undefined

what?chrome 会报错?你代码写错了把!

chrome 报错 navigator.mediaDevices is undefined

最近在开发一个摄像头项目(多人会议,需要摄像头~~)。然后同事的电脑调试好好的,到我这里就报错了,我的 chrome 版本一直都在最新的,为啥到我这反而还不兼容?

原来是以后的内容会越来越严格
chrome:想调用摄像头?可以啊,拿出你的https证书给我瞧瞧

解决问题

毕竟不可能到处都有 https 证书把,总得本地调试把,localhost 域名总会有吧。于是发现了这么一篇文章:MediaDevices.getUserMedia` undefined 的问题

那么我自己也做个记录

解决方法 1

通过相应参数启动 Chrome

比如我们调试的链接是:http://example.com。如果有多个网址,用,隔开

 --unsafely-treat-insecure-origin-as-secure="http://example.com"

加哪里呢?

注意前面有个空格

解决方法 2(比较推荐这个)

  • chrom 下

打开 chrome://flags/#unsafely-treat-insecure-origin-as-secure

  • 选 enabled
  • 填写需要调试的 URL,多个 URL 以,隔开
  • 完全重启 chrome 后起效(改了之后下面也会有个 relaunch 按钮)

重启后发现,就可以非https调试了

  • edge 下

毕竟现在 edge 和 chrome 内核一样了,所以操作方法一样,只是打开链接不同:edge://flags/#unsafely-treat-insecure-origin-as-secure


至此,问题就解决了,要想到线上使用,还是需要https,现在没 https 寸步难行

### 解决谷歌浏览器 `navigator.mediaDevices.getUserMedia` 调用失败的方法 #### 浏览器安全策略限制 由于浏览器的安全策略规定,`navigator.mediaDevices.getUserMedia` 方法仅能在 HTTPS 协议或 localhost 域名下生效[^2]。如果当前环境不符合这些条件,则该 API 将无法正常工作。 #### 处理 `undefined` 错误 当遇到 `MediaDevices.getUserMedia undefined` 的错误时,在本地开发环境中可以通过特定方式来解决问题: - 确认是否在 Chrome 中正确配置了相关设置。有时即使是在 localhost 上运行也可能因为某些原因导致此功能不可用。 - **Chrome 启动参数调整** - 可以尝试通过命令行启动 Chrome 并附加如下参数:`--unsafely-treat-insecure-origin-as-secure=http://your-local-domain.com --user-data-dir=/tmp/chrome-dev-session` 。这会使得指定的 HTTP 地址被当作安全源处理[^3]。 - **启用实验性 Flag** - 打开 chrome://flags/#enable-usermedia-screen-capturing 页面并开启对应的选项,重启浏览器后再次测试。 #### 正确使用 `getUserMedia` 下面是一个简单的 JavaScript 代码片段用于请求访问用户的摄像头设备: ```javascript if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { const constraints = { video: true }; navigator.mediaDevices.getUserMedia(constraints).then(function(stream){ let videoElement = document.querySelector('video'); videoElement.srcObject = stream; }).catch(function(error){ console.error("获取媒体流失败:", error); }); } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值