我在 PeerJS 中收到 stream.getTracks is not a function 错误。我该如何解决?

I get an stream.getTracks is not a function error in PeerJS. How do i fix this?

所以我一直在使用 PeerJS 制作一个 p2p 聊天应用程序,它在尝试聊天时有效,但是当我尝试使用以下功能呼叫某人时:

function callEm(id){
  call = peer.call(id,
    navigator.mediaDevices.getUserMedia({video: false, audio: true})
    );

  call.on('stream', function(stream) { // B
      window.remoteAudio.srcObject = stream; // C
      window.remoteAudio.autoplay = true; // D
      window.peerStream = stream; //E
      showConnectedContent(); //F    });
  })
  }

我从 PeerJS 得到一个错误,说 e.getTracks is not a function e.getTracks是peerJS库中的一段代码:https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js

我已经尝试了我在 Internet 上找到的所有内容,但仍然出现此错误。我希望有人能够帮助我。

编辑:我尝试了更简洁的库版本(https://unpkg.com/peerjs@1.3.1/dist/peerjs.js),但出现错误 stream.getTracks() is not a function

所以我找到了解决方案,问题是我的代码有误:P

所以我创建了一个调用具有 Id 的人的函数。 早些时候是:

function callEm(id){
  console.log(id);
  console.log(navigator.mediaDevices.getUserMedia({video: false, audio: true}));

  call = peer.call(id,
    // window.localStream
    navigator.mediaDevices.getUserMedia({video: false, audio: true})
    );

  call.on('stream', function(stream) { // B
      window.remoteAudio.srcObject = stream; // C
      window.remoteAudio.autoplay = true; // D
      window.peerStream = stream; //E
      showConnectedContent(); //F    });
  })
  }

问题是我提供了作为 MediaStream 的承诺,而不是实际值。 我知道的愚蠢错误

所以在一个不和谐的朋友向我指出并帮助我改变它之后, 函数变为:

function callEm(id){
  navigator.mediaDevices.getUserMedia({video: false, audio: true})
  .then(function(stream) {
        call = peer.call(id, stream);
        call.on('stream', function(stream) { // B
          window.remoteAudio.srcObject = stream; // C
          window.remoteAudio.autoplay = true; // D
          window.peerStream = stream; //E
          showConnectedContent(); //F    });
        })
    })
    .catch(function(err) {
      console.log("error: " + err);
    })
  );
  }

然后修复了它。我还没来得及接听电话,但这个电话没有任何错误!

我希望有人觉得这有用。