3

我正在从 git 存储库中签出的源代码构建 Visual Studio 代码:

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

构建过程中没有错误。

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

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

[storage state.vscdb] open():由于错误无法打开数据库:找不到模块'../build/Release/sqlite

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

我可以看到:

sqlite3.a sqlite.a

我不清楚为什么电子/vscode 找不到这个库。对于如何告诉运行时在哪里查找模块的任何指针,我将非常感激。

4

1 回答 1

4

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

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

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

node-gyp configure

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

node-gyp build

Asqlite.node将在 build/Release 中生成。

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

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

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

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

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

于 2019-10-17T21:30:11.397 回答