Electron 里 native 模块重编译后样式错乱怎么办?
我用 Electron 打包了一个带原生模块(比如 sqlite3)的应用,本地开发没问题,但打包后发现界面样式全乱了。重装 node_modules、用 electron-rebuild 重新编译 native 模块都试过了,还是不行。是不是 native 模块影响了 CSS 加载?
我的样式代码很简单,就下面这样:
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
background-color: #f5f5f5;
}
.container {
padding: 20px;
max-width: 800px;
margin: 0 auto;
}
但打包后 background-color 不生效,padding 也错位了,控制台没报错。这到底跟 native 模块有关系吗?
首先检查下你的 CSS 文件加载路径。Electron 打包后路径结构会变,如果用相对路径容易挂。建议改成这样加载:
然后确认下你的打包配置。如果是用 electron-builder,需要在 build 配置里加上:
还有个常见坑是 CSS 被 webpack 之类的工具处理过。如果用了这些工具,确保配置里没把 CSS 提取或压缩出问题。
最后吐槽下,Electron 打包路径问题真是永恒的痛,我上周还被这个坑了半小时...