gpt4 book ai didi

sqlite - 如何告诉从源代码编译的 Visual Studio Code 在哪里可以找到 sqlite 模块?

转载 作者:行者123 更新时间:2023-12-03 17:46:40 27 4
gpt4 key购买 nike

我正在从从 git 存储库 check out 的源构建 Visual Studio Code:

git clone https://github.com/microsoft/vscode 

我正在使用:

export NODE_OPTIONS=--max_old_space_size=2048 
./scripts/npm.sh install --arch=armhf
./scripts/code.sh

我在 Raspberry PI 4 上使用节点 10.16.3,使用 Raspbian buster

构建期间没有错误。

安装会在第一次运行时下载预编译版本的 electron。

但是每次我尝试运行代码时,它都会启动但出现错误:

[storage state.vscdb] open(): Unable to open DB due to Error: Cannot find module '../build/Release/sqlite

如果我查看 node_modules/vscode-sqlite3/build/Release/

我可以看到:

sqlite3.asqlite.a

我不清楚为什么 electron/vscode 找不到这个库。如果能提供有关如何告诉运行时在哪里查找模块的任何指示,我将不胜感激。

最佳答案

在检查构建脚本并经过许多痛苦的实验后,我发现并解决了导致此错误的 2 个问题。

  1. 留下 .a 静态库的事实暗示 binding.gypconfig.gpy 和/或 makefile 中的某些设置是错误的,因为 Native Node模块通常是带有 .node 扩展名的动态库。 vscode-sqlite3 下的 binding.gyp 文件中的一个条件行似乎是罪魁祸首:
    ...
    ["target_arch=='arm'", {"type": "static_library"}]
    ...

禁用该行(通过删除它或将“arm”更改为其他内容)然后运行:

node-gyp configure

在构建目录下重新生成 config.gpy 文件。然后构建模块:

node-gyp build

sqlite.node 将在构建/发布时生成。

  1. 不幸的是,最新的 Electron ABI 版本很少与 Node.js 版本匹配。在我的配置中, Electron ABI 版本是 72 (v6.0.12),但最新的稳定节点版本是 ABI 64。因此我们必须执行 electron-rebuild 来更新 sqlite.node 以匹配 Electron 版。

为此,您必须先安装 electron-rebuild(yarn add electron-rebuild),然后通过明确提供 vscode 下载的 Electron 二进制文件的版本号来运行 electron-rebuild:

electron-rebuild -v 6.0.12 -m /home/dev/vscode -o vscode-sqlite3

当然,您必须说明您正在构建的特定 Electron 版本的版本号。(请查看electron-rebuild --help了解选项的含义。重建二进制模块需要一段时间...)

然后可以将生成的 sqlite.node 移动到 build/Release/中。 vscode项目目录下的目录。瞧,我们有一个适用于 Raspbian 的最新版本 VS-Code!

关于sqlite - 如何告诉从源代码编译的 Visual Studio Code 在哪里可以找到 sqlite 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com