我有一个使用 Webpack 捆绑的 commonjs 浏览器应用程序(打字稿)。它使用 webrtc 所以我想使用来自 npm的webrtc-adapter 包。它是adapter.js的包,它使得在firefox 和chrome 之间使用webrtc 更容易。
在我的模块中,我希望能够访问修改后的导航器项目。例如,我可以简单地调用:
navigator.mediaDevices.getUserMedia
Run Code Online (Sandbox Code Playgroud)
如果我需要这个包,然后在我的模块中的某处使用变量,我可以让它工作,如下所示:
var webrtc = require("webrtc-adapter");
// somewhere in module
console.log(webrtc.browserDetails);
Run Code Online (Sandbox Code Playgroud)
但是,我不需要通过 webrtc-adapter 访问 browserDetails 或任何公开的项目,我只想使用 navigator 对象上的 shimmed 调用。我试过使用 webpack.ProvidePlugin 和 externals,但两者仍然要求我在某处使用该对象。
有没有一种方法可以将带垫片的导航器加载到每个模块中,而不必要求然后在我的模块中的某处使用该变量?我知道我可以在配置中使用 external ,然后通过单独的脚本标签加载它,但我更喜欢将 webpack 捆绑在一起。
我正在编写WebRTC应用程序,并且存在以下问题:
我想使用adapter.js库。
我有以下index.html:
<html>
<header>
<script src='../out/adapter.js'></script>
<script src='../out/main.js'></script>
</header>
<body>
<video id="localVideo" width='500' autoplay></video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和我的main.js看起来像:
var adapter=require('webrtc-adapter');
var localVideo=document.querySelector('video#localVideo');
navigator.getUserMedia(media_constraints, handleUserMedia, handleUserMediaError);
function handleUserMedia(stream) {
localStream = stream;
adapter.attachMediaStream(localVideo, stream);
console.log('Adding local stream.');
}
Run Code Online (Sandbox Code Playgroud)
但是我的浏览器记录了错误: Uncaught ReferenceError: require is not defined