首页 > 解决方案 > 为什么 navigator.mediaDevice 只能在 localhost:9090 上正常工作?

问题描述

我想使用麦克风录制销售人员的声音,在我们 localhost:9090/#/chatroom 这样的开发环境中navigator.mediaDevices工作正常。但是在生产环境中,导航器没有 mediaDevices 对象,它是未定义的。有人能告诉我为什么吗?

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36

let stream = null;
const constraints = {
  audio: true,
};

try {
  stream = await navigator.mediaDevices.getUserMedia(constraints);
  /* use the stream */
  this.beginRecord(stream);
  this.recorder.mediaStream = stream;
} catch (err) {
  /* handle the error */
  // console.error(err);
}

navigator.mediadevices.getusermedia 不是函数

标签: javascriptgoogle-chrome

解决方案


您必须使用 HTTPS。localhost是此要求的一个例外。

注意SecureContext接口上的属性https://w3c.github.io/mediacapture-main/#navigator-interface-extensions

请参阅:在 navigator 中找不到 serviceWorker 了


推荐阅读