Skip to content

使用Tauri2.x版本开发请不要使用ant-design-vue4.x版本

最近开发桌面保存密码的这个程序已经到了尾声,先是打包以后接口请求不到,参考这篇文章:。

解决完进入到系统内又发现了新问题,所有的样式全部都丢失了。准确的说是ant-design的样式都丢失了,自己写的还在。

一开始考虑是tauri2.0版本打包的问题,但是使用npm run tauri build打包的时候,其实执行的npm run build先对前端进行了打包,打包完成的dist程序并没有什么问题。

使用http-server在本地简单看了一下,可以说是一点儿瑕疵也没有。并且使用npm run tauri dev运行程序也没有任何问题。

但是之前使用Tauri1.x版本 + ant-design-vue3.x版本开发并没有这种异常,所以考虑两个方面:

  1. tauri2.x版本打包可能存在特殊配置
  2. ant-design-vue4.x版本打包存在问题

但是如上所述,执行npm run tauri build打包出来的前端代码是没问题的,遂考虑是ant-design版本的问题。

仔细翻阅官网看到 v3版本 到 v4版本 最重大的一个升级就是原本的 less 样式升级到的 CSS-in-JS,原本的样式文件都被合并进了Js文件中。

问题明确了:

  • 在 Tauri 构建后,CSS-in-JS 的样式 没有被正确注入到 DOM 中。
  • 开发模式(vite dev)中一切正常,因为 CSS-in-JS 的运行时环境是完整的。
  • dist下正常是因为部署在 HTTP 服务器上,CSS-in-JS 运行环境完整。
  • Tauri 构建后运行在 file:// 协议下,某些 CSS-in-JS 的运行时行为可能受限或失败。

所以解决问题的思路就应该是禁用CSS-in-JS

但是尝试了非常多的方案均无效,包括使用@ant-design/cssinjs,或者是官网推荐的unplugin-vue-components

最后无奈只能回退到ant-design-vue3.x版本,仍然使用原本的样式引入,问题解决。

Ps: 兄弟们如果有好的方案可以留言解决一下这个问题,非常感谢。