electron打包后网络请求失败

 在运行npm run electron:build之后,运行exe后缀的程序。会发现所有的网络请求都请求不到,会报错

这是因为窗口加载的url地址是 app://./index.html,而在项目中我们因为要访问后端接口,统一进行了跨域代理的处理,这是网络请求失败的主要原因。

本地服务的接口是http://xxx.xx.x.xxx:xxxx/接口名,而electron打包后的接口是app://接口名。

解决方案:

(1)

(2)同时,还要将主进程background.js的webPreferences属性设置为false,允许跨域

--------------成功解决。

但是!!本地项目运行的话,会报错跨域了,如果只追求打包项目能运行的话,可以这样做。或者也可以让后端设置允许跨域。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron ,当你将应用程序打包后,你可以使用 file 协议来请求本地文件。下面是一个简单的示例代码,演示了如何在 Electron 请求本地文件: ```javascript const { app, BrowserWindow } = require('electron'); const path = require('path'); const url = require('url'); let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }); // 加载 index.html 文件 mainWindow.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true })); // 其他窗口关闭时触发 mainWindow.on('closed', function () { mainWindow = null; }); } // 应用程序就绪后创建窗口 app.on('ready', createWindow); // 其他窗口全部关闭时退出应用程序 app.on('window-all-closed', function () { // 在 macOS 上,应用程序及其菜单栏通常保持激活状态,直到用户通过 Cmd + Q 显式退出 if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', function () { // 在 macOS 上,点击 dock 图标并且没有其他窗口打开时,重新创建一个窗口 if (mainWindow === null) { createWindow(); } }); ``` 在上面的代码,`mainWindow.loadURL()` 方法用于加载 `index.html` 文件。`pathname` 参数指定了文件的路径,`protocol` 参数设置为 `'file:'`,这样就可以使用 file 协议来加载本地文件。 请确保在 `webPreferences` 将 `nodeIntegration` 设置为 `true`,以便在渲染进程使用 Node.js API,例如读取文件。同时也要注意,加载本地文件可能存在安全风险,因此请谨慎处理用户输入和文件访问权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值