Published on

Fix "fetch is not defined" error in external packages


If you're on older versions of Node.js, then chances are you might be running into an error when you try to use fetch natively.

"ReferenceError: fetch is not defined" for external packages

The fix is straight forward. Use node-fetch


npm install node-fetch

By assigning fetch to global, it will resolve the issue even for external packages

Polyfill for ESM

import fetch, { Headers, Request } from "node-fetch";

if (!globalThis.fetch) {
  globalThis.fetch = fetch;
  globalThis.Headers = Headers;
  globalThis.Request = Request;

// Or the old way like this 👇
// global.fetch = fetch;

Polyfill for CommonJS

const fetch = require('node-fetch');
global.fetch = fetch;

Happy fixing fetch!