0

我正在开发一个 VSCode 扩展,它通过oracledb npm查询一个 Oracle 数据库实例

以 vscode-database扩展为基础。

安装的节点版本是 8.9.4。检查与 Oracle 的连接的测试脚本工作正常:

-> node -v
8.9.4
-> node connect.js
ok

但是当我尝试使用相同的连接脚本调试 VSCode 扩展时,出现错误:

激活扩展 bajdzis.vscode-database 失败:NJS-045:无法加载 Node.js 7.9.0(win32、x64)的 oracledb 附加二进制文件

该错误表明正在使用 Node.js 7.9.0,而不是 8.9.4。我假设 7.9.0 - 是 VSCode 调试器使用的一些内部节点实例。

是否可以使 VSCode 调试器使用安装在开发人员机器上的 Node 版本,而不是内部版本?

4

1 回答 1

0

虽然无法让 VS Code 调试器使用不同版本的 Node.js,但可以为 Node.js 的目标版本编译本机模块(如 node-oracledb)。这里有一些细节

对于 VS Code 1.21.1(使用 Electron 1.7.0),我从扩展目录中的终端执行了以下操作(可能需要先删除该oracledb目录node_modules):

# Electron's version.
export npm_config_target=1.7.0
# The architecture of Electron, can be ia32 or x64.
export npm_config_arch=x64
export npm_config_target_arch=x64
# Download headers for Electron.
export npm_config_disturl=https://atom.io/download/electron
# Tell node-pre-gyp that we are building for Electron.
export npm_config_runtime=electron
# Tell node-pre-gyp to build module from source code.
export npm_config_build_from_source=true
# Install all dependencies, and store cache to ~/.electron-gyp.
HOME=~/.electron-gyp npm install

最后一行启动了一个 npm install ,它为目标平台正确编译了二进制文件(Node.js 7.9.0 的自定义版本,它的 V8 版本比 Node.js 的通常版本更新)。

于 2018-03-21T21:56:50.330 回答