Ashok
Ashok

Reputation: 455

How to configure node-fetch to use the company proxy?

I am executing a standalone nodejs script (no web server involved) that needs to fetch result from a third party api. The program uses 'node-fetch' to do the fetch(url) and I run it using node .\test.js from command line.

It fails when I am connected to our company network but works fine on direct internet. I have configured the proxy settings in npm and could see that npm config ls shows the correct values for proxy and https-proxy.

So the questions are: 1. Does running the test.js via node not pick the proxy config from npm? 2. How to make sure that the fetch(url) call goes through our proxy?

Thanks in advance

Upvotes: 13

Views: 33540

Answers (2)

Stéphane Bruckert
Stéphane Bruckert

Reputation: 22903

https://github.com/gajus/global-agent offers a neat way to use a proxy without modifying the code, so production will be untouched.

npm i global-agent --save-dev

Pass GLOBAL_AGENT_HTTPS_PROXY, GLOBAL_AGENT_HTTP_PROXY and -r global-agent/bootstrap to your local/test Node process:

"scripts": {
    "main": "node ./main.js",
    "test": "GLOBAL_AGENT_HTTPS_PROXY=http://127.0.0.1:1234 GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:1234 node -r global-agent/bootstrap ./test.js"
}

You may also want to set GLOBAL_AGENT_NO_PROXY for requests that don't need the proxy.

Upvotes: 0

Abinash
Abinash

Reputation: 243

This worked for me, try using this : https://github.com/TooTallNate/proxy-agents

The request formed will be similar to this:

fetch('accessUrl', {agent: new HttpsProxyAgent('proxyHost:proxyPort')})
    .then(function (res) {
    })

Upvotes: 19

Related Questions