在 Node.js(Node)扩展 / 原生模块(Native Addons,如 .node 文件或 node-gyp 编译的包) 场景下,选版本主要看 Node 版本、ABI 和 API 稳定性。下面用通俗方式说明怎么选。
Node 扩展版本必须和你的 Node.js 运行时版本匹配
不匹配通常会报:
NODE_MODULE_VERSION mismatch
或
The module was compiled against a different Node.js version
node -v
例如:
每个 Node 大版本对应一个 ABI:
| Node 版本 | ABI |
|---|---|
| Node 14 | 83 |
| Node 16 | 93 |
| Node 18 | 108 |
| Node 20 | 115 |
| Node 22 | 127 |
✅ 扩展编译时的 ABI ≈ 你运行时的 ABI 才能用
优先选:
@mapbox/node-pre-gyp / prebuild / node-api例如:
npm install bcrypt
如果带预编译,直接能用
直接:
npm install 包名
让 npm 自动选:
用 nvm 管理 Node:
nvm install 18
nvm use 18
npm install
#include <napi.h>
✅ N-API 可跨 Node 版本(ABI 稳定)
❌ Node 升级后旧 .node 不能用
✅ 重新 npm rebuild 或重装
npm rebuild
❌ Docker 里 Node 和本地不一致
✅ 保证镜像 Node 版本一致
Node 版本对得上 + 有预编译 / 用 N-API = 稳
如果你能告诉我:
sqlite3、bcrypt、sharp)我可以直接帮你选具体版本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。