2015-11-03 67 views

回答

0

簡短的回答:

我們發現問題是由browserify-墊片的配置不正確引起的。在的package.json,添加以下行:

"browserify-shim": { 
    "node-uuid": "uuid" 
    } 

較長的答案:

在uuid.js,它具有以下初始化:

if (!_rng && _global.crypto && crypto.getRandomValues) { 
    // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto 
    // 
    // Moderately fast, high quality 
    var _rnds8 = new Uint8Array(16); 
    _rng = function whatwgRNG() { 
     crypto.getRandomValues(_rnds8); 
     return _rnds8; 
    }; 
    } 

_global的值是一個匿名對象,並且值_global.crypto未定義。添加上述配置後,_global的值爲window_global.crypto爲預期值。

原因是,當您配置browserify-shim時,我們告訴它node-uuid庫會將變量uuid導出到調用環境中。在瀏覽器中,調用環境將爲window,因此當它運行node-uuid的初始化時,它會設置事件,以便調用環境成爲窗口。

如果你不這樣配置,那麼browserify-shim認爲node-uuid沒有返回任何值,所以調用環境被設置爲匿名對象。

相關問題