Hey everyone, in our efforts to run into errors before you do, there is a quick fix for an issue in Angular that makes it impossible to perform important operations. Here is who is affected:
Framework: Angular
SDK: JS, obviously
Affected operations: Cryptographic operations, a.k.a. everything that requires messing around with private keys, you can still instantiate the SDK and e.g. query for the latest block.
Trouble Causer: We need to use some NodeJS packages that are not optimized for the browser by Angular yet, but apparently it is being worked on for the next angular Release.
Fix for now:
- In your project root folder, create a file called
patch.js
containing the following code:
const fs = require('fs');
const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';
fs.readFile(f, 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result = data.replace(/node: false/g, 'node: {crypto: true, stream: true}');
fs.writeFile(f, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
- In your
package.json
, underscripts
add the entry"postinstall": "node patch.js"
, example:
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"postinstall": "node patch.js"
},
- Reinstall your project’s dependencies:
$ rm -R node_modules && npm install
Thanks a lot to @nduchak.chain for his huge help to troubleshoot this one,