根据 node 官网的版本记录: https://nodejs.org/zh-cn/download/releases/ 直接从 NODE_MODULE_VERSION 72 ,跳过到了 79 ,那现在提示 NODE_MODULE_VERSION 76 ,我该咋办。。。实现没办法了。。
1
Kasumi20 2022-04-03 00:03:58 +08:00
WFT ? SQLite 是 ANSI-C 源代码。它必须先编译成机器代码才能使用。本文是编译 SQLite 的各种方法的指南。
https://www.sqlite.org/howtocompile.html |
2
MuscleOf2016 OP @Kasumi20 少打了 是 node 的 better-sqlite3
|
3
Kasumi20 2022-04-03 00:12:49 +08:00
|
4
MuscleOf2016 OP @Kasumi20 已经安装了全局的 node-gyp ,
``` Uncaught Error: The module '\\?\D:\better-sqlite3\build\better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 79. This version of Node.js requires NODE_MODULE_VERSION 76. Please try re-compiling or re-installing the module (for instance, using npm rebuildornpm install). ``` 我很奇怪,提示我需要 76 版本,但是我找不到 76 对应的 node 版本号 |
5
skies457 2022-04-03 00:55:16 +08:00 via iPhone
@MuscleOf2016 这说的是你的 nodejs 是 76 ,但库是 79 编译的,所以你需要 79 的 nodejs
|
6
littlepanzh 2022-04-03 00:59:57 +08:00 via iPhone
|
7
cweijan 2022-04-03 01:05:45 +08:00
是因为 sqlite 内置了一个编译后的.node 文件, 和你的 nodejs 版本不兼容, 如果你安装了 node-gyp 的话, 就会 npm install 时使用 node-gyp 重新编译, 使用 node-gyp 需要 gcc 编译工具, 如果是 windows, 通过执行`npm install -g windows-build-tools`安装.
|
8
magicdawn 2022-04-04 21:28:01 +08:00
|
9
magicdawn 2022-04-04 21:33:32 +08:00
|
10
magicdawn 2022-04-04 21:37:07 +08:00
建议选一个支持 N-API 的包, 这样不用重新 build (包使用的 napi 版本 < runtime napi 版本即可)
mapbox/node-sqlite3 已经使用了 N-API |
11
MuscleOf2016 OP @magicdawn 意思 76 对应 9.0.0-beta.1 版本的 nodejs ,那我现在是不是没办法用这个版本去编译了,找不到地方去下载了。。
|
12
MuscleOf2016 OP @magicdawn
建议选一个支持 N-API 的包, 这样不用重新 build (包使用的 napi 版本 < runtime napi 版本即可) -------------- 指定 target: '8.0.0',napi 57 的也是不行。。 |
13
magicdawn 2022-04-05 22:55:41 +08:00
NODE_MODULE_VERSION 在头文件里定义的,
用 electron 的头文件不行? cd /path-to-module/ HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://electronjs.org/headers |
14
wangtian2020 2022-04-13 14:53:15 +08:00
遇到过相同的问题 ,当时是想在 electron 上用 sqlite ,一开始瞄准了要用 better-sqlite3
当时忙活了一下午,各种 rebuild 失败死活装不上,issue 看了个遍也没找到办法 然后就直接用 sqlite3 了,用 promise 封住一下,照样用 "sqlite3": "^5.0.2", |