I just use
const fetch = require('node-fetch')
And I get
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\Alex\Desktop\rollbot\node_modules\node-fetch\src\index.js from C:\Users\Alex\Desktop\rollbot\index.js not supported.
Instead change the require of C:\Users\Alex\Desktop\rollbot\node_modules\node-fetch\src\index.js in C:\Users\Alex\Desktop\rollbot\index.js to a
dynamic import() which is available in all CommonJS modules.
{
code: 'ERR_REQUIRE_ESM'
}
All my other packages work, just node-fetch does this. What should I do in order to use node-fetch?
What I finded is that the latest version of node-fetch changed to ES modules by default. You can do:
npm uninstall node-fetchnpm install node-fetch@2It has worked for me!
From the node-fetch package readme:
node-fetch is an ESM-only module - you are not able to import it with require. We recommend you stay on v2 which is built with CommonJS unless you use ESM yourself. We will continue to publish critical bug fixes for it.
If you want to require it, then downgrade to v2.
The other option you have is to use async import('node-fetch').then(...)
In my case, I personally found it easier to require ('cross-fetch') instead. The documentation is here: cross-fetch
It can be used in CommonJS as well as ES6 modules.