diff --git a/README.md b/README.md index aa2e2af63..80cfaa420 100644 --- a/README.md +++ b/README.md @@ -112,21 +112,21 @@ npm install node-fetch ## Loading and configuring the module +### ES Modules (ESM) + ```js import fetch from 'node-fetch'; ``` -If you want to patch the global object in node: +### CommonJS -```js -import fetch from 'node-fetch'; +`node-fetch` from v3 is an ESM-only module - you are not able to import it with `require()`. -if (!globalThis.fetch) { - globalThis.fetch = fetch; -} -``` +If you cannot switch to ESM, please use v2 which remains compatible with CommonJS. Critical bug fixes will continue to be published for v2. -`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. +```sh +npm install node-fetch@2 +``` Alternatively, you can use the async `import()` function from CommonJS to load `node-fetch` asynchronously: @@ -135,6 +135,27 @@ Alternatively, you can use the async `import()` function from CommonJS to load ` const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args)); ``` +### Providing global access + +To use `fetch()` without importing it, you can patch the `global` object in node: + +```js +// fetch-polyfill.js +import fetch from 'node-fetch'; + +if (!globalThis.fetch) { + globalThis.fetch = fetch; + globalThis.Headers = Headers; + globalThis.Request = Request; + globalThis.Response = Response; +} + +// index.js +import './fetch-polyfill' + +// ... +``` + ## Upgrading Using an old version of node-fetch? Check out the following files: