在使用electron中,发现在renderer进程中使用axios调接口报Network Error错误,在主进程中调用即可正常返回,且排除了渲染进程中的跨域错误。调试发现,axios在渲染进程中默认使用的是xhr适配器,通过在请求拦截器中打印配置即可看到,如下:

Snipaste20230723123346png

我的渲染进程是开启了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;
}

这样,在渲染进程中请求就正常了。