Appearance
Troubleshooting Create React App
If you're using a framework like Create React App and are running into build errors, check out some common errors and how to resolve them.
Missing Polyfills (Webpack 5)
Since Create React App uses Webpack 5, you may encounter errors like the one below:
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
This is because many standard web3 libraries, such as ethers.js
, have dependencies that need to be polyfilled into your build environment. Webpack 5 no longer automatically handles these polyfills, which triggers this error.
You can work past these issues by explicitly adding in these dependencies and overriding some configurations, as outlined below:
1. Install dependencies
Run the following command in your project to install the necessary dependencies:
sh
npm i --save-dev react-app-rewired assert buffer process stream-browserify url
2. Configure your project with react-app-rewired
In your package.json
, in your start, build, and test scripts, update react-scripts
to react-app-rewired
. The "scripts" object should look like the following:
json
{
...,
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
...
}
This allows you to bypass the default webpack configurations from create-react-app
.
3. Add config-overrides.js
to your project
Lastly, at the root of your project, create a file called config-overrides.js
and paste in the following:
js
const webpack = require('webpack');
module.exports = function override(config) {
config.resolve.fallback = {
assert: require.resolve('assert'),
buffer: require.resolve('buffer'),
'process/browser': require.resolve('process/browser'),
stream: require.resolve('stream-browserify'),
url: require.resolve('url'),
http: false,
https: false,
os: false,
};
config.plugins.push(
new webpack.ProvidePlugin({
process: 'process/browser',
Buffer: ['buffer', 'Buffer'],
}),
);
config.ignoreWarnings = [/Failed to parse source map/];
return config;
};
This tells your browser where to look for the dependencies that you've now added.
That's it!
INFO
Still have questions? Reach out to support@privy.io – we're here to help!