解决webpack-dev-server由于网络问题出现ETIMEDOUT
当我们使用webpack-dev-server开启服务,配置proxy
会出现ETIMEDOUT
时,我们可以通过配置agent
来解决问题。
[HPM] Error occurred while trying to proxy request /api/sys/init from localhost:3000 to http://xxx.com/ (ETIMEDOUT) (https://nodejs.org/api/errors.html#errors_common_system_errors)
原理
配置proxy
下的agent
配置项
实现
安装插件
npm i socks-proxy-agent --save-dev
配置
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks://127.0.0.1:1080')
const config = {
// ...
devServer: {
// ...
proxy: {
"/api": {
target: "https://github.com",
changeOrigin: true,
agent
}
}
}
}
或者通过读取http_proxy
设置
export http_proxy=socks://127.0.0.1:1080
const proxyAgent = {};
if (process.env.http_proxy) {
proxyAgent.agent = new SocksProxyAgent(process.env.http_proxy)
}
const config = {
// ...
devServer: {
// ...
proxy: {
"/api": {
target: "https://github.com",
changeOrigin: true,
...proxyAgent
}
}
}
}
其他框架配置类似