Webpack/Crypto-Browserify Reference Error: assignment to undeclared variable _crypto

Webpack/Crypto-Browserify Reference Error: assignment to undeclared variable _crypto

完全被难住了。我有一个导入帮助文件的 React 应用程序。该帮助文件现在仅包含以下内容(并且文件正在正确加载):

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

我得到这个错误:"Reference Error: assignment to undeclared variable _crypto"

源映射将我带到由 Webpack 编译的 'bundle.js,' 中的这段代码:

/* 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))

/***/ },

该函数来自'(webpack) > ~/node-libs-browser/~ > crypto-browserify' 中名为 'rng.js' 的文件 当我注释掉 twilio 实例化方法时,错误消失了。直到我开始使用 twilio 模块,它才出现。

有人以前见过这个问题或对我如何解决它有建议吗?谢谢。

这里是 Twilio 开发人员布道者。

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

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

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