golang的wails框架在macos下的问题

1、前言

之前练手写了格调用ollama api的web应用,想找个容器打包下,于是找到wails来打包,windows下都是很正常的,因为就是普通的http调用,也没遇到cors跨域问题,但是到了macos下使用wails dev命令启动的客户端却是出现了几个问题。

总得来说就是时不时遇到一些浏览器限制相关的问题

2、问题

2.1、页面出不来

就是因为wails在macos使用websocket来更新vite的hmr热更新功能,所以出不来资源,解决方法是使用这个issues[macOS] HMR not working inside Wails frame的回答。

在vite.config.js的配置增加以下配置即可:

复制代码
server: {
    hmr: {
      host: 'localhost',
      protocol: 'ws',
    },
  }

2.2、请求出现跨域

跨域也是因为他用了个奇奇怪怪的私有协议来通信,具体可以看issueOrigin wails://wails is not allowed by Access-Control-Allow-Origin,可以看到主要是因为他源码的startURL指定了一个奇怪的协议,windows用正常的http导致的,这个解决就是改下他源码,把他的macos的实现改得和windows一样。

到你的goPath下面,按照目录找到如下文件:wails/v2/internal/frontend/desktop/darwin/frontend.go

我的路径如下:/Users/hui/go/pkg/mod/github.com/wailsapp/wails/[email protected]/internal/frontend/desktop/darwin

改动如下:

39行的startURl改为:const startURL = "http://127.0.0.1/"

97行的:

复制代码
result.startURL.Host = net.JoinHostPort(result.startURL.Host+".localhost", port)

去掉.localhost

改为:

复制代码
result.startURL.Host = net.JoinHostPort(result.startURL.Host+"", port)

接着启动项目,好了

2.3、不能访问外网的接口

会报如下错误:

复制代码
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

是mac自己的安全机制问题,百度了下,说是接口是https就行了,我访问的是http的接口

2.4、如何调试

这格使用wails dev启动之后,是框住的网页来的,在网页处,右键检查元素即可

2.5、如何动态参数控制

看这个issuePass Command Line Arguments to main.go即可

3、demo项目

ollama-chat项目的样式是参考一个react项目写的。

参考文章:3 天,入门 TAURI 并开发一个跨平台 ChatGPT 客户端

相关推荐
HashFlag1 小时前
Go常用的设计模式
开发语言·设计模式·golang
谦虚使人发胖2 小时前
Golang使用 ip2region 查询IP的地区信息
服务器·开发语言·golang
demonlg01122 小时前
Go 语言标准库中database模块详细功能介绍与示例
开发语言·数据库·golang
demonlg01122 小时前
Go 语言标准库中reflect模块详细功能介绍与示例
开发语言·后端·golang
马拉萨的春天2 小时前
mac 下配置flutter 总是失败,请参考文章重新配置flutter 环境MacOS Flutter环境配置和安装
flutter·macos
yinshuilan3 小时前
Tabby 一:如何在Mac配置保姆级教程(本地模型替换hugging face下载)
macos·ai编程·tabby·ai模型
米粒宝的爸爸3 小时前
mac idea的快捷键
macos
demonlg01124 小时前
Go 语言标准库中log模块详细功能介绍与示例
开发语言·后端·云原生·golang
刘小哈哈哈4 小时前
封装了一个支持多个分区的iOS自适应动态宽度layout
macos·ios·cocoa
demonlg01126 小时前
Go 语言标准库中strings和strconv详细功能介绍与示例
开发语言·后端·云原生·golang