2016-05-09 59 views
3

我有一個commonjs瀏覽器應用程序(打字稿),我使用Webpack捆綁。它使用webrtc,所以我想使用webrtc-adapter package from npm。它是adapter.js的軟件包,它使得webrtc在firefox & chrome之間的工作更容易。如何在Webpack中使用webrtc-adapter(adapter.js)shim?

我的模塊內我想要能夠訪問修改後的導航器項目。例如,這樣我就可以直接電話諮詢:

navigator.mediaDevices.getUserMedia 

我可以得到它,如果我需要的包,然後某處使用變量我的模塊中,像這樣的工作:

var webrtc = require("webrtc-adapter"); 
// somewhere in module 
console.log(webrtc.browserDetails); 

不過,我不不需要通過webrtc-adapter訪問browserDetails或任何公開的項目,我只是想在導航器對象上使用shimmed調用。我試過使用webpack.ProvidePlugin和外部,但都仍然要求我在某處使用該對象。

有沒有一種方法可以將填充的導航器加載到每個模塊中,而無需在模塊中的某處使用該變量?我知道我可以在配置中使用external,然後通過單獨的腳本標記加載它,但我更願意將webpack捆綁在一起。

回答

2

你有沒有試過只是要求這樣?

require('webrtc-adapter');

+0

這工作。謝謝。如果您這樣做,TypeScript會輸出一個錯誤「無法找到需要的名稱」。添加'declare function require(moduleName:string)'雖然修復了它。 –

1

對於正常的WebPack:

var a = require('webrtc-adapter'); 

對於打字原稿。如果您還想要一些類型,請使用@ types/webrtc的引用標籤。

/// <reference types="webrtc" /> 
import 'webrtc-adapter';