npm install sqlite3
安装节点sqlite3时,它获取所有依赖项并安装它。然后获取目标架构和平台的预编译二进制绑定文件。在我的例子中,我们希望napi-v6-darwin-unknown-arm64
用于ARM 64,达尔文用于Apple M1。目前还没有可用于此Apple ARM 64的预编译二进制文件,即使有,下一段将详细说明为什么它仍然不起作用。node-pre-gyp
来确定系统的平台和架构,而这正是Github issue的救星,它详细说明了node-pre-gyp
如何无法正确处理ARM架构检测,基本上将所有内容都搞混了。因为它无法正确检测,即使我们在安装时构建自己的--build-from-source
绑定,它仍然无法工作,因为它为错误的架构编译了错误的绑定文件。更糟糕的是,如果我们不使用--build-from-source
,它只是简单地获取Intel预编译的绑定文件。napi-v6-darwin-unknown-x64
napi-v6-darwin-unknown-arm64
的"module not found“错误。显然,它找不到,即使找到了,也将抛出错误的架构错误,因为我们在napi-v6-darwin-unknown-x64
板上安装了英特尔版本。npm uninstall sqlite3
npm install sqlite3 --build-from-source --target_arch=arm64 --fallback-to-build