我正在开发一个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调试器使用的一些内部Node实例。
是否可以使VSCode调试器使用安装在开发人员计算机上的Node版本,而不是内部版本?
答案 0 :(得分:0)
虽然不可能使VS Code调试器使用不同版本的Node.js,但可以为Node.js的目标版本编译本机模块(如node-oracledb)。以下是some details。
对于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安装,它正确地为目标平台编译了二进制文件(Node.js 7.9.0的自定义版本,其版本比V8的版本通常高于Node.js)。< / p>