6

我已经构建了一个节点应用程序,它使用一个模块来处理数据库(better-sqlite3)。

它作为节点应用程序运行良好。但是,现在我正在尝试制作一个具有大部分相同功能的 VS Code 扩展。

但是,当我安装模块、构建和运行新扩展时,我会收到以下消息:

激活扩展 'undefined_publisher.myPlugin' 失败:模块 '\?\C:...\node_modules\better-sqlite3\build\Release\better_sqlite3.node' 是使用 NODE_MODULE_VERSION 72 针对不同的 Node.js 版本编译的。这个版本Node.js 需要 NODE_MODULE_VERSION 75。请尝试重新编译或重新安装模块(例如,使用npm rebuildor npm install)..

我知道 VS Code 扩展是 Electron 应用程序,它们使用的节点版本与我为纯节点应用程序创建的节点不同,但我不清楚在扩展中我必须做什么来构建模块(better-sqlite3)节点的正确版本?

4

1 回答 1

5

npm rebuild在普通节点下编译代码。它不会构建插件。要解决此问题,您必须执行以下操作:

npm install --save-dev electron-rebuild

# Every time you run "npm install", run this:
./node_modules/.bin/electron-rebuild

# On Windows if you have trouble, try:
.\node_modules\.bin\electron-rebuild.cmd

另外,如果上述方法不起作用,您需要进行一些清理和重建,如下所示:

  • 如果您还没有安装 electron-rebuild,只需使用以下命令安装它:npm i -D electron-rebuild
  • node-modules文件夹中删除<your-module-name>@<your-module-name> 文件夹。
  • 删除文件packages-lock.json
  • 运行npm i安装未安装的模块
  • 最后运行./node_modules/.bin/electron-rebuild或相应的 windows 等效项 -.\node_modules\.bin\electron-rebuild.cmd 在 npm i 之后直接运行上述命令非常重要。

参考:电子文档 - https://www.electronjs.org/docs/tutorial/using-native-node-modules

类似问题 - https://github.com/mscdex/cap/issues/92

类似问题 - https://github.com/serialport/node-serialport/issues/1910

于 2020-04-25T06:13:46.967 回答