本文目录
- 代码测试网络
- 两种解决方式
- 设置环境变量
- 代码中设置
在日常开发中,代码中偶尔需要访问特定的服务例如github,而NodeJS在访问网络时默认是不受其他工具影响的,需要通过环境变量或代码配置的方式实现Proxy,本文简单描述了调试和设置的方法
代码测试网络
通过nodejs代码确定当前开发环境是否可以访问指定的地址,例如github,
确保本机已安装nodejs,在任意位置新建js脚本:proxy_test.js,内容如下:
const http = require('http');const options = {hostname: 'www.github.com',port: 80,path: '/',method: 'GET',
};const req = http.request(options, (res) => {console.log(`STATUS: ${res.statusCode}`);res.on('data', (chunk) => {console.log(`BODY: ${chunk}`);});
});console.log("HTTP_PROXY: "+process.env.HTTP_PROXY);
console.log("HTTPS_PROXY: "+process.env.HTTPS_PROXY);req.on('error', (e) => {console.error(`Problem with request: ${e.message}`);
});req.end();
控制台运行:node proxy_test.js
-
当访问超时时显示如下:

-
当访问成功时显示如下:

需要解决的是访问超时或失败的问题;
当指定的网站访问不通时,首先确保本机已经已经能够访问,可以通过在cmd中ping github.com确认是否可以访问。
两种解决方式
设置环境变量
NodeJS会读取HTTP_PROXY和HTTPS_PROXY环境变量,所以此处通过set命令设置Proxy,其中"端口"替换为实际的,请自行查看和确定。
set HTTP_PROXY=http://127.0.0.1:端口
set HTTPS_PROXY=http://127.0.0.1:端口
设置后运行node proxy_test.js再次测试,如果本机确实能够访问github.com,但是运行node命令时还是超时,需要自行排查本机设置问题以及处理。
代码中设置
如果不想通过环境变量设置,可以使用一些库例如global agent:
npm install global-agent
在代码中配置:
import 'global-agent/bootstrap';// 或者手动配置,替换"端口"为实际端口
process.env.GLOBAL_AGENT_HTTP_PROXY = 'http://127.0.0.1:端口';
