【发布时间】:2020-07-31 12:13:35
【问题描述】:
我已经构建了一个节点应用程序,它使用模块来处理数据库 (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 rebuild或npm install)..
我知道 VS Code 扩展是 Electron 应用程序,它们使用的节点版本与我为纯节点应用程序创建的节点不同,但我不清楚在扩展中我必须做什么来构建模块(更好- sqlite3) 使用正确版本的节点?
【问题讨论】:
-
您的原生模块必须使用与 VS Code 的 Electron 框架使用的相同版本的节点进行编译。因此,这也意味着,每次 VS Code 更改 Electron 框架的版本时,您都必须升级您的节点模块。因此,在编译原生模块时,请确保
node-gyp使用 Electron 框架使用的正确 Node 版本。这可能会回答您的问题:stackoverflow.com/questions/46384591/… -
感谢您的反馈...我无法找到有关执行您建议的实际步骤的信息,主要是因为我对电子知之甚少。我只创建了几个 VS Code 扩展,没有完整的电子应用程序。我一直在阅读 VS Code 文档,所以我不了解内部结构,并且 VS Code 文档中没有太多内容。我如何告诉 node-gyp 使用哪个版本?我想我想要节点模块版本 75,对吧?我有电子重建,但似乎无法告诉它如何使用版本 75 重建。任何帮助或文档指针将不胜感激!
-
您是否尝试过错误消息提示的内容?即重建或重新安装有问题的模块?
-
是的,我尝试了 npm 重建并重新安装。我收到相同的错误消息。问题似乎是我用于非 vscode 扩展开发的节点版本与 vscode 扩展所需的版本不同。我不知道如何更改当前节点安装的目标,以使其与 vscode 扩展开发保持一致。无论如何,这是我最好的猜测。
-
允许您轻松更改每个项目的节点版本:github.com/nvm-sh/nvm
标签: node.js visual-studio-code electron vscode-extensions better-sqlite3