在使用electron
中,发现在renderer
进程中使用axios
调接口报Network Error
错误,在主进程中调用即可正常返回,且排除了渲染进程中的跨域错误。调试发现,axios
在渲染进程中默认使用的是xhr
适配器,通过在请求拦截器中打印配置即可看到,如下:
我的渲染进程是开启了node
支持的,如下:
mainWindow = new BrowserWindow({
show: false,
width: 1400,
minWidth: 1000,
minHeight: 600,
height: 800,
icon: getAssetPath('icon.png'),
frame: false,
webPreferences: {
preload: app.isPackaged
? path.join(__dirname, 'preload.js')
: path.join(__dirname, '../../.erb/dll/preload.js'),
nodeIntegration: true,
contextIsolation: false,
defaultEncoding: 'utf8'
},
});
猜测渲染进程与真正的浏览器环境还是有区别的,所以导致了xhr
请求出现问题,在请求拦截器中将适配器指定为http
,如下:
const requestIntercetor = async (config) => {
// Others ...
// 适配器指定为http
config.adapter = "http";
return config;
}
这样,在渲染进程中请求就正常了。