如何在包括本地sqlite3模块的Mac上为Windows编译我的Electron代码?

时间:2019-05-13 20:57:59

标签: electron node-sqlite3 node-pre-gyp

我的目标是为Mac创建一个发行版,为Windows创建另一个发行版。我想从Mac创建这两个发行版。目前,我的Mac发行版效果很好。

但是对于Windows发行版,sqlite3模块仍然存在问题。

我的应用程序使用的唯一本机模块是sqlite3。

我真的不知道该怎么办才能最终使我的应用程序在Windows上正常工作。我不想在Windows计算机上编译我的代码。我只想在Mac上编译代码。

我的配置是:

  • 节点v12.2.0
  • npm v6.9.0
  • 电子v5.0.1
  • sqlite3 v4.0.8
  • MacOS Mojave v10.14.0

尝试使用以下命令为Windows编译sqlite3模块:

node-pre-gyp install --directory=./node_modules/sqlite3 --target_platform=win32 --target_arch=x64 --target=12.2.0

node-pre-gyp返回以下消息:

node-pre-gyp WARN Using request for node-pre-gyp https download
Warning: node-pre-gyp could not find exact match for 12.2.0
Warning: but node-pre-gyp successfully choose 12.0.0 as ABI compatible target
Warning: node-pre-gyp could not find exact match for 12.2.0
Warning: but node-pre-gyp successfully choose 12.0.0 as ABI compatible target

[sqlite3] Success: "/Users/Flooder/Programmes/electron/c4/node_modules/sqlite3/lib/binding/node-v72-win32-x64/node_sqlite3.node" is installed via remote

我得到一个新目录:./node_modules/sqlite3/lib/binding/node-v72-win32-x64

重命名此新目录,用于:./node_modules/sqlite3/lib/binding/electron-v5.0-win32-x64

当我在Windows计算机上尝试新发行版时,出现此错误:

未捕获的异常: 错误:模块D:\ c4 \ resources \ app \ node_modules \ sqlite3 \ lib \ binding \ electron-v5.0-win32-x64 \ node_sqlite3.node是使用NODE_MODULE 72针对另一个Node.js版本编译的。 Node.js要求使用NODE_MODULE_VERSION70。请尝试重新编译或重新安装该模块(例如,使用“ npm rebuild”或“ npm install”)。

...

好几个星期以来,我一直困扰着这个问题...

真的可以从Mac上为Windows编译sqlite3模块吗?

node-pre-gyp是否是正确的解决方案?怎么样?

1 个答案:

答案 0 :(得分:0)

最后,这是我的解决方案:

  • 在Mac上安装了Parallel Desktop;
  • 在此虚拟机中安装了Windows 10;
  • 在虚拟Windows机器上安装的节点,npm,python,electron,electron-rebuild,sqlite等;
  • 在虚拟机上使用“ electron-rebuild -f -w sqlite3”重新编译了sqlite3
  • 将新的./node_modules/sqlite3/lib/binding/electron-v5.0-win32-x64从Windows复制到Mac
  • 在Mac上,使用电子打包程序重新编译了我的PC电子版应用程序

现在,Windows的新编译版本可在Win机器上使用!