Reputation: 455
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
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
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