node-fetch をプロキシ環境で使えるようにする薄いラッパーを書きました。
使い方はnode-fetchと同じです。
const fetch = require('node-fetch-with-proxy');
fetch('http://httpbin.org/get').then(res => { ... });
node-fetchとは異なる点として環境変数でプロキシを設定することができます。
# こんな感じで環境変数を指定しておけばプロキシ経由でリクエストするようになる
export HTTP_PROXY=http://your.proxy:8080
なお環境変数が有効になるのはNode.jsのみです。
ブラウザではブラウザ自身のプロキシ設定が使われますのでご注意ください。
動機
node-fetch はデフォルトではプロキシをサポートしません。
拡張オプションの agent
を使えば以下のように比較的簡単に解決できますが、Node.js専用でブラウザでは使えません。1
const ProxyAgent = require('proxy-agent');
const agent = new ProxyAgent();
fetch('https://www.google.com', { agent }).then(res => { ... });
個人的にnode-fetchを使いたい一番の理由がユニバーサルJSなのでブラウザでも破綻しない方法を探したのですが見つけられず、止む無くそれ用のモジュールを自作するに至りました。
もっと上手いやり方あったら教えてください...
-
ProxyAgentが Node.js固有の
net
とかtls
に依存してるためビルドでコケる ↩