crypto.randomBytes不是角度

时间:2017-11-25 13:57:47

标签: angular

我正在angular4,

中导入ethereumjs-wallet
import EthereumWallet from 'ethereumjs-wallet';
var wallet = EthereumWallet.generate();
const jsV3 = wallet.toV3(passwd);

库内的代码如下所示

var privKey = crypto.randomBytes(32)

抛出错误

  

错误错误:未捕获(在承诺中):TypeError:crypto.randomBytes is   不是函数TypeError:crypto.randomBytes不是函数   TypeError:crypto.randomBytes不是函数       在Function.webpackJsonp ... / .. / .. / .. / ethereumjs-wallet / index.js.Wallet.generate

如何解决?

1 个答案:

答案 0 :(得分:1)

运行

  

npm install crypto-browserify --save

之后,您需要创建一个文件来修复(解决方法)......像这样:

var fs = require('fs');

// PACKAGE_ERROR and FILE_ERROR is shown on your error
fs.readFile('./node_modules/[PACKAGE_ERROR]/[FILE_ERROR]', 'utf8', function (err,data) {
  if (err) return console.log(err);

  var result = data.replace('require(\'crypto\');', 'require(\'crypto-browserify\');');

  fs.writeFile('./node_modules/[PACKAGE_ERROR]/[FILE_ERROR]', result, 'utf8', function (err) {
     if (err) return console.log(err);
  });

});

现在,您需要在package.json上添加postinstall代码

...
"scripts":{
"postinstall":"node [fixFileName].js",
...

要完成,请运行:

  

npm install
  用于 ng build

我希望这有帮助!