'Module not found: Error: Can't resolve 'crypto', webpack < 5 used to include polyfills for node.js core modules by default
I was trying to build the react project using npm run build but it failed with the following messages.
❯ npm run build
> [email protected] build
> react-scripts build
Creating an optimized production build...
Failed to compile.
Module not found: Error: Can't resolve 'crypto' in '/Users/...../node_modules/web3-eth-accounts/lib'
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.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "crypto": false }
Solution 1:[1]
I tried to configure config-overrides.js and webpack.config.js with these commands
(thanks to answer)
webpack.config.js:
module.exports = {
resolve: {
fallback: { crypto: false },
},
};
However, I'm still receiving the same error.
Later on, I found that the default react-scripts bundled in node_module contains it's own webpack.config.js and it may interfere with mine. Not sure about this tbh. Would be nice if someone can explain.
And eventually, I changed the "scripts" in package.json to this and the error finally disappeared
"scripts": {
"start": "NODE_ENV=production node_modules/react-scripts/bin/react-scripts.js start",
"build": "NODE_ENV=production node_modules/react-scripts/bin/react-scripts.js build",
....
},
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | jonijeng |
