数通智联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
liwenxuan 5141388245 tongbu 2 years ago
..
dist tongbu 2 years ago
lib 合并 2 years ago
LICENSE 合并 2 years ago
README.md 合并 2 years ago
package.json tongbu 2 years ago

README.md

node-fetch-native

A redistribution of node-fetch v3 for better backward and forward compatibility.

Why this package?

  • We can no longer require('node-fetch') with latest version. This stopped popular libraries from upgrading and dependency conflicts between node-fetch@2 and node-fetch@3.
  • With upcoming versions of Node.js, native fetch is being supported. We are prepared for native fetch support using this package yet keep supporting older Node versions.

Features:

Prefer to native globals when available (See Node.js experimental fetch).

Compact build and less install size with zero dependencies vs

Support both CommonJS (require) and ESM (import) usage

Use native version if imported without node condition using conditional exports with zero bundle overhead

Polyfill support for Node.js

Usage

Install node-fetch-native dependency:

# npm
npm i node-fetch-native

# yarn
yarn add node-fetch-native

# pnpm
pnpm i node-fetch-native

You can now either import or require the dependency:

// ESM
import fetch from 'node-fetch-native'

// CommonJS
const fetch = require('node-fetch-native')

More named exports:

// ESM
import { fetch, Blob, FormData, Headers, Request, Response, AbortController } from 'node-fetch-native'

// CommonJS
const { fetch, Blob, FormData, Headers, Request, Response, AbortController } = require('node-fetch-native')

Force using non-native version

Sometimes you want to explicitly use none native (node-fetch) implementation of fetch in case of issues with native/polyfill version of globalThis.fetch with Node.js or runtime environment.

You have two ways to do this:

  • Set FORCE_NODE_FETCH environment variable before starting application.
  • Import from node-fetch-native/node

Polyfill support

Using the polyfill method, we can once ensure global fetch is available in the environment and all files. Natives are always preferred.

Note: I don't recommand this if you are authoring a library! Please prefer explicit methods.

// ESM
import 'node-fetch-native/polyfill'

// CJS
require('node-fetch-native/polyfill')

// You can now use fetch() without any import!

Alias to node-fetch

Using this method, you can ensure all project dependencies and usages of node-fetch can benefit from improved node-fetch-native and won't conflict between node-fetch@2 and node-fetch@3.

npm

Using npm overrides:

// package.json
{
  "overrides": {
    "node-fetch": "npm:node-fetch-native@latest"
  }
}

yarn

Using yarn selective dependency resolutions:

// package.json
{
  "resolutions": {
    "node-fetch": "npm:node-fetch-native@latest"
  }
}

pnpm

Using pnpm.overrides:

// package.json
{
  "pnpm": {
    "overrides": {
      "node-fetch": "npm:node-fetch-native@latest"
    }
  }
}

License

Made with 💛

node-fetch is published under the MIT license