rsnext/packages/next/server/node-polyfill-fetch.js

24 lines
724 B
JavaScript
Raw Normal View History

import fetch, { Headers, Request, Response } from 'node-fetch'
import { Agent as HttpAgent } from 'http'
import { Agent as HttpsAgent } from 'https'
// Polyfill fetch() in the Node.js environment
if (!global.fetch) {
const httpAgent = new HttpAgent({ keepAlive: true })
const httpsAgent = new HttpsAgent({ keepAlive: true })
const agent = ({ protocol }) =>
protocol === 'http:' ? httpAgent : httpsAgent
const fetchWithAgent = (url, opts, ...rest) => {
if (!opts) {
opts = { agent }
} else if (!opts.agent) {
opts.agent = agent
}
return fetch(url, opts, ...rest)
}
global.fetch = fetchWithAgent
global.Headers = Headers
global.Request = Request
global.Response = Response
}