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 发送请求。
完全被难住了。我有一个导入帮助文件的 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 发送请求。