使用 node-gyp 为特定 NODE_MODULE_VERSION 编译节点模块

Compile node module with node-gyp for a specific NODE_MODULE_VERSION

我正在尝试在 Electron 应用程序中使用 npm 包 fsuipc。但是,当我启动应用程序时出现以下错误

The module 'node_modules\fsuipc\build\Release\fsuipc.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 93. This version of Node.js requires
NODE_MODULE_VERSION 98.

我正在尝试为版本 98 重新编译它。我对 node-gyp 或类似软件没有 0 经验,我只是想让它工作:(。我试过 node-gyp build --target=v16.13.1 但它仍然编译成这个我似乎无法更改的神秘版本 93。感谢任何帮助。

经过两天的研究和无休止的反复试验,我找到了解决方案。

这可能是我使用的电子样板中的一个错误,但归根结底,我必须手动构建本机包。从 here 我了解到我正在使用我当前安装的 node.js 版本编译它,但是因为我使用的是 electron,所以需要使用 electron headers 构建模块。我遵循的步骤是:

  1. cd release/app && npm install fsuipc 本机依赖项必须安装在 release/app。
  2. cd node_modules/fsuipc && npm install 移动到包目录并安装构建所需的依赖项。
  3. node-gyp rebuild --target=15.3.5 --arch=x64 --dist-url=https://electronjs.org/headers 这是关键。目标必须是您在 this website 中使用的有效且完整的版本名称(如果您使用的是电子)。通过反复试验,我通过指定我正在为 x64 构建来解决了一些问题。为了让它使用电子编译,请指定 headers url (所有电子版本都相同)。
  4. cd ../../ && npm install 通过在 release/app 目录中调用安装,模块与“正常”链接 node_modules

然后 运行!