基于go框架goframe后端+vue3打包vite工具开发应用常见问题
使用语言与工具
后端 golang,框架goframe,应用具体框架gfeasy 前端 vue3,打包工具vite,后端具体权限框架cool-admin,UI框架elementUI-plus,语言typescript(ts) 服务器 caddy,也可以是nginx
具体实现
目的是搭建一个权限后台框架,最终要部署到具体域名下,开发时候用开发模式.
- vite打包以后非常大的单文件js,所以我们要分包处理.
- 代理设置
server: {
host:"0.0.0.0",
port: 8000,
hmr: {
overlay: true
},
proxy: {
"/": {
target: "http://127.0.0.1:8887",
changeOrigin: true,
},
}
},
build: {
sourcemap: false,
outDir:"../public",
polyfillDynamicImport: false, // 必须为false
rollupOptions:{
output:{
manualChunks(id){ // 分包
if(id.includes('node_modules')){
return id.toString().split('node_modules/')[1].split('/')[0].toString();
}
}
}
}
}
上面代码是服务器设置和打包. 用yarn dev是开发模式,此时访问地址是127.0.0.1:8000去访问,开发完成以后用yarn build打包,这时候是127.0.0.1:8887去访问 ,我们把打包目录放在了go项目里面public,并且public是静态文件目路,这样到时候域名直接绑定到127.0.0.1:8887上边即可. 就实现了域名访问,如果是caddy非常简单. 打包以后容易出现一刷新就访问不到情况,这是因为vite默认是history模式,所以必须改成hash模式就正常了. vite打包后文件很大,上边代码可以实现分包处理.
- vite问题
第一次安装以后出现,
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.
这样一个错误, 很久都没解决,网上找了好久只有一个人说的可以,就是修改windows注册表,linux无此问题, 解决方法 只需要redegit命令打开注册表,查看HKEY_CLASSES_ROOT->.js,发现里面有一个Content-Type的配置, text/plain改成application/javascript,然后重启本地服务器即可正常
还有一个问题是开发模式也就是vite dev正常,打包vite build命令以后,放到域名下面是访问不到后端接口的,直接报错404 ,说明路由是不正确的,因为我们使用了go语言,它自带静态服务器,不用第三方服务器也行,我们直接把打包文件放到public下面 然后去访问,发现正常了,因为此时静态html和后端实际上走的都是同一个端口. 试过之后就正常了,但是只要一刷新,发现有报错404,这时候明显知道是vue路由模式错了,默认情况下history,看着很干净,但是不能正常用,所以必须用hash模式.
至于绑定域名,因为已经用了go,静态文件并不需要放到nginx下面了,如果要这么做也可以,那就要在nginx里面配置代理后端模式了 .我自己用的caddy所以直接转发以下即可.nging是caddy图形化界面服务器,只是包了个皮,直接鼠标操作.
总之这一套下面,又学了不少关于vue3知识,ts知识,打包vite的使用. 后台框架cool-admin是综上上边知识的不错框架.gfeasy是整合了cool-admin和goframe的,因为官方只支持java和nodejs后端, gfeasy整合了golang语言 个人经过增加功能.后面打算把这一套整个开源出来 解决方法 只需要redegit命令打开注册表,查看HKEY_CLASSES_ROOT->.js,发现里面有一个Content-Type的配置, text/plain改成application/javascript,然后重启本地服务器即可正常
还有一个问题是开发模式也就是vite dev正常,打包vite build命令以后,放到域名下面是访问不到后端接口的,直接报错404 ,说明路由是不正确的,因为我们使用了go语言,它自带静态服务器,不用第三方服务器也行,我们直接把打包文件放到public下面 然后去访问,发现正常了,因为此时静态html和后端实际上走的都是同一个端口. 试过之后就正常了,但是只要一刷新,发现有报错404,这时候明显知道是vue路由模式错了,默认情况下history,看着很干净,但是不能正常用,所以必须用hash模式.
至于绑定域名,因为已经用了go,静态文件并不需要放到nginx下面了,如果要这么做也可以,那就要在nginx里面配置代理后端模式了 .我自己用的caddy所以直接转发以下即可.nging是caddy图形化界面服务器,只是包了个皮,直接鼠标操作.
总之这一套下面,又学了不少关于vue3知识,ts知识,打包vite的使用. 后台框架cool-admin是综上上边知识的不错框架.gfeasy是整合了cool-admin和goframe的,因为官方只支持java和nodejs后端, gfeasy整合了golang语言 个人经过增加功能.后面打算把这一套整个开源出来. 解决方法 只需要redegit命令打开注册表,查看HKEY_CLASSES_ROOT->.js,发现里面有一个Content-Type的配置, text/plain改成application/javascript,然后重启本地服务器即可正常
还有一个问题是开发模式也就是vite dev正常,打包vite build命令以后,放到域名下面是访问不到后端接口的,直接报错404 ,说明路由是不正确的,因为我们使用了go语言,它自带静态服务器,不用第三方服务器也行,我们直接把打包文件放到public下面 然后去访问,发现正常了,因为此时静态html和后端实际上走的都是同一个端口. 试过之后就正常了,但是只要一刷新,发现有报错404,这时候明显知道是vue路由模式错了,默认情况下history,看着很干净,但是不能正常用,所以必须用hash模式.
至于绑定域名,因为已经用了go,静态文件并不需要放到nginx下面了,如果要这么做也可以,那就要在nginx里面配置代理后端模式了 .我自己用的caddy所以直接转发以下即可.nging是caddy图形化界面服务器,只是包了个皮,直接鼠标操作.
总之这一套下面,又学了不少关于vue3知识,ts知识,打包vite的使用. 后台框架cool-admin是综上上边知识的不错框架.gfeasy是整合了cool-admin和goframe的,因为官方只支持java和nodejs后端, gfeasy整合了golang语言 个人经过增加功能.后面打算把这一套整个开源出来..
- 原文作者:Yoby
- 原文链接:/2021/12/27/20211227vite.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),关于内容请通过关于我方式联系作者!