2015-11-03 31 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没有返回任何值,所以调用环境被设置为匿名对象。

相关问题