Webpack / Crypto-Browserify参考错误:分配给未声明的变量_crypto

时间:2016-09-22 21:56:49

标签: webpack twilio browserify

完全难倒。我有一个导入帮助文件的React App。该助手文件现在只包含以下内容(并且文件正确加载):

var accountSid = '<secret_id>'; 
var authToken  = '<secret_token>';
var client = require('twilio')(accountSid, authToken);

我收到此错误:&#34;参考错误:分配给未声明的变量_crypto&#34;

源地图将我带到了&#39; bundle.js中的这段代码,&#39;由Webpack编译:

/* 262 */
/***/ function(module, exports, __webpack_require__) {

    /* WEBPACK VAR INJECTION */(function(global, Buffer) {'use strict';

    (function () {
      var g = ('undefined' === typeof window ? global : window) || {};
      _crypto = g.crypto || g.msCrypto || __webpack_require__(263);
      module.exports = function (size) {
        // Modern Browsers
        if (_crypto.getRandomValues) {
          var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
          /* This will not work in older browsers.
           * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
           */

          _crypto.getRandomValues(bytes);
          return bytes;
        } else if (_crypto.randomBytes) {
          return _crypto.randomBytes(size);
        } else throw new Error('secure random number generation not supported by this browser\n' + 'use chrome, FireFox or Internet Explorer 11');
      };
    })();
    /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(257).Buffer))

/***/ },

该功能来自名为&#39; rng.js&#39;的文件。内部&#39;(webpack)&gt; 〜/ node-libs-browser /〜&gt;加密browserify&#39; 当我注释掉twilio实例化方法时,错误消失了。在我开始使用twilio模块之前,它并没有显示出来。

之前有人见过这个或者有关于我如何修复它的建议?日Thnx。

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

您似乎正在尝试在浏览器中使用Twilio Node module。这不受支持,也非常不推荐。原因之一是:

如果您在前端列出了您的帐户凭据,那么任何恶意用户都可以窃取和使用您的Twilio帐户,将所有资金都花在他们想要打电话或短信的人身上。

我们建议您在服务器上对Twilio进行API调用,并在需要创建动态前端时通过Ajax发送请求。