I am trying to upgrade my react project to web-pack 5. I am using create-react-app. When I did so I got the following errors:
Compiled with problems:X
ERROR in ./node_modules/content-disposition/index.js 19:15-39
Module not found: Error: Can't resolve 'path' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/content-disposition'
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: { "path": require.resolve("path-browserify") }'
- install 'path-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "path": false }
ERROR in ./node_modules/jszip/lib/readable-stream-browser.js 9:0-34
Module not found: Error: Can't resolve 'stream' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/jszip/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: { "stream": require.resolve("stream-browserify") }'
- install 'stream-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "stream": false }
ERROR in ./node_modules/safe-buffer/index.js 2:13-30
Module not found: Error: Can't resolve 'buffer' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/safe-buffer'
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: { "buffer": require.resolve("buffer/") }'
- install 'buffer'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "buffer": false }
ERROR in ./node_modules/shpjs/lib/binaryajax-browser.js 7:15-39
Module not found: Error: Can't resolve 'buffer' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/shpjs/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: { "buffer": require.resolve("buffer/") }'
- install 'buffer'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "buffer": false }
ERROR in ./node_modules/shpjs/lib/binaryajax-fetch.js 7:15-39
Module not found: Error: Can't resolve 'buffer' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/shpjs/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: { "buffer": require.resolve("buffer/") }'
- install 'buffer'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "buffer": false }
ERROR in ./node_modules/shpjs/lib/index.js 21:15-39
Module not found: Error: Can't resolve 'buffer' in '/home/kboul/Documents/Apps/earthnetviewer/esa_react/node_modules/shpjs/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: { "buffer": require.resolve("buffer/") }'
- install 'buffer'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "buffer": false }
To resolve these errors I installed each of the above-mentioned packages individually, created a webpack.config.js and included there:
module.exports = {
resolve: {
fallback: { path: false, buffer: false, stream: false }
}
};
as I did not care including pollyfils and supporting old browsers.
I also tried this in case I wanted to support them.
module.exports = {
resolve: {
fallback: {
buffer: require.resolve('buffer/'),
path: require.resolve('path-browserify'),
stream: require.resolve('stream-browserify')
}
}
};
I removed package-lock.json and node_modules hit npm i, npm start and I got this:
Uncaught ReferenceError: process is not defined
at Object../node_modules/path/path.js (bundle.js:sourcemap:674629:17)
at Object.options.factory (bundle.js:sourcemap:1195967:31)
at __webpack_require__ (bundle.js:sourcemap:1195348:33)
at fn (bundle.js:sourcemap:1195638:21)
at Object../node_modules/content-disposition/index.js (bundle.js:sourcemap:543216:17)
at Object.options.factory (bundle.js:sourcemap:1195967:31)
at __webpack_require__ (bundle.js:sourcemap:1195348:33)
at fn (bundle.js:sourcemap:1195638:21)
at Module../src/utils/files.js (bundle.js:sourcemap:235901:77)
at Module.options.factory (bundle.js:sourcemap:1195967:31)
I have tried all the possible solutions that can be found on the net but with no luck including this thread and this one
I have also installed process library and declare it in the webpack. Still the same error. Any recommendations are welcome.
I have created a related issue on the official react-scripts github repo issues