There is an established standard by which proxies are configured. It runs via the following environment variables:
https_proxy
: Proxy for https traffichttp_proxy
: Proxy for http trafficno_proxy
: URLs that should not run via a proxy.
The native fetch
client of NodeJS does not offer any functionality for this out-of-the-box, but there is an agent from the undici
http client that you can use:
import { EnvHttpProxyAgent } from "undici";
const ENV_HTTP_PROXY_AGENT = new EnvHttpProxyAgent();
const proxyAgent = { dispatcher: ENV_HTTP_PROXY_AGENT } as any;
await fetch("https://...", {
...proxyAgent,
});
The node type definition does not support a dispatcher
attribute for fetch
, but it's a supported logic. So if you're using TypeScript you can ignore the error or use the beloved as any
pattern for the proxy agent.
And that's everything, no manual evaluation of the environment variables. Everything is handled by the EnvHttpProxyAgent
from undici
.