Package Exports
- node-fetch-cjs
- node-fetch-cjs/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-fetch-cjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Node Fetch CJS
This package is a wrapper for Node Fetch v3 for commonjs environments.
Motivation
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
Installation
$ npm install node-fetch-cjs
Usage
Destructuring export (recommended):
const { default: fetch, Headers } = require("node-fetch-cjs");
fetch(/* ... */).then(/* ... */);
const headers = new Headers();
Legacy export:
const fetch = require("node-fetch-cjs");
fetch.default(/* ... */).then(/* ... */);
const headers = new fetch.Headers();
Full documentation
Full documentation is available on the node-fetch repository.
Differences
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");
const blob = new Blob(["content"], { type: "text/plain" });
const text = await blob.text();
const data = new FormData();
data.append("key", "value");
TypeScript
Types are bundled with node-fetch-cjs
, so you don't need to install any additional packages.
Acknowledgement
Thanks to node-fetch/node-fetch for their work to allow all of us to use fetch
in Node.JS environments.