This package is a wrapper for Node Fetch v3 for commonjs environments.
Since v3, node-fetch only provides an ESM version of the package.
While this choice is a good choice for the future, it is impacting a lot of codebases built on commonjs environment. Some of them could update their code to import node-fetch using native import() but many could not. This is especially true for TypeScript users who cannot mix commonjs and ESM imports in their projects.
This module bundles node-fetch using esbuild and apply some custom transformations to make sure it works in commonjs environments.
If you are able to migrate to the official v3 release of node-fetch, we highly recommend to use the official node-fetch. This package is built to help users who could not migrate easily.
This repository is automatically updated when a new version of node-fetch is released
$ npm install node-fetch-cjsDestructuring export (recommended):
const{default: fetch, Headers }=require("node-fetch-cjs");fetch(/* ... */).then(/* ... */);constheaders=newHeaders();Legacy export:
constfetch=require("node-fetch-cjs");fetch.default(/* ... */).then(/* ... */);constheaders=newfetch.Headers();Full documentation is available on the node-fetch repository.
In order to be fully CJS compatible, we had to bundle dependencies from node-fetch directly into this package.
This means that both fetch-blob and formdata-polyfill are bundled.
For your convenience, these dependencies are exported to allow you to use them in your code:
const{ Blob, FormData }=require("node-fetch-cjs");constblob=newBlob(["content"],{type: "text/plain"});consttext=awaitblob.text();constdata=newFormData();data.append("key","value");Types are bundled with node-fetch-cjs, so you don't need to install any additional packages.
Thanks to node-fetch/node-fetch for their work to allow all of us to use fetch in Node.JS environments.