我的目标是为 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_VERSION 70。请尝试重新编译或重新安装模块(例如,使用“npm rebuild”或“npm install”)。
...
好几个星期以来,我一直被这个问题困扰......
真的可以从 Mac 为 Windows 编译 sqlite3 模块吗?
node-pre-gyp 是正确的解决方案吗?如何?