我的目标是为Mac创建一个分发,而另一个则为Windows创建一个。我想从我的Mac创建这两个分布。目前,我的Mac分布效果很好。
,但我仍然对Windows Distribution 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
节点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
我得到 new Directory :./node_modules/sqlite3/lib/binding/node-v72-win32-x64
i 重命名此新目录:./node_modules/sqlite3/lib/binding/electron-v5.0-win32-x64
当我在Windows机器上尝试新的分发时,我会收到此错误:
未被发现的例外:错误:模块d: c4 resources app node_modules sqlite3 lib binding binding electron-v5.0-win32-x64 node_sqlite3.node 3.node是使用node_module 72编制的。node.js需要node_module_version 70.请尝试重新编译或重新安装模块(例如,使用'npm recuild'或'npm install'(。
...
自从数周以来,我一直遇到这个问题...
真的有可能从Mac中编译Windows的SQLite3模块?
节点pre-gyp是正确的解决方案吗?如何?
最后,这是我的解决方案:
- 在我的Mac上安装并行桌面;
- 在此虚拟机中安装了Windows 10;
- 在虚拟Windows Machine上安装了节点,NPM,Python,Electron,Electron,Sqlite等。
- 虚拟机上的" electron -rebuild -f -w sqlite3"重新编译SQLite3
- 从Windows到Mac 复制新的./node_modules/sqlite/sqlite/sqlite/sqlite/sqlite/lib/binding/electron-v5.0-win32-x64
- 在Mac上,用电子包装器重新编译了我用于PC的电子应用
现在,Windows的新编译版本可在Win Machine上工作!