在 Electron 应用程序中安装 oracledb 时出现证书错误

Certificate error was raised when installing oracledb in Electron app

我是 运行 Windows 7,使用 oracledb v1.10.0、electron-prebuilt v1.2.2、electron-rebuild v1.1.5、node v0.12.7 和 npm v2.11.3。当我执行 node_modules/.bin/electron-rebuild -f -w oracledb 时,我收到以下错误:

gyp ERR! stack Error: certificate not trusted
gyp ERR! stack     at Error (native)
gyp ERR! stack     at TLSSocket.<anonymous> (_tls_wrap.js:929:36)
gyp ERR! stack     at TLSSocket.emit (events.js:104:17)
gyp ERR! stack     at TLSSocket._finishInit (_tls_wrap.js:460:8)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "H:\electron-quick-start\node_modules\electron-rebuild\node_modules\npm\node_modules\node
-gyp\bin\node-gyp.js" "install" "--target=1.2.7" "--arch=x64" "--dist-url=https://gh-contractor-zcbenz.s3.amazonaws.co
m/atom-shell/dist"
gyp ERR! cwd H:\electron-quick-start
gyp ERR! node -v v0.12.7
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok  

如何让这个命令成功执行?

好像是Module没有自行注册。在 Windows 上,'node' 实际上是一个调用 iojs 的批处理文件,而本机模块不喜欢那样。您还需要将 iojs 可执行文件复制到 'node' 以满足本机模块。

现在,我不清楚你到底在做什么。但是如果你想在 Electron 中使用原生模块,你需要针对 Electron includes/header 构建你的原生代码,而不是那些 iojs。您可以查看此命令语法示例:

node-gyp rebuild --target=0.22.3 --arch=ia32 --target_platform=win --dist-url=https://atom.io/download/atom-shell

我收到的证书错误是由于在 Windows 下的公司防火墙后面。为了解决这个问题,我从 https 中删除了 s,因此 dist-url 值变成了 http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist。我得到的另一个错误是(如@Thennarasan 所提到的)"Module did not self-register" 并且为了解决这个问题我调用了以下命令并且它起作用了:

PS H:\electron-app> cd node_modules\oracledb
PS H:\electron-app\node_modules\oracledb> node-gyp rebuild --target=1.2.8 --arch=x64 --target_platform=win --dist-url=http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist --msvs_version=2013
PS H:\electron-app> cd ..\..

我从这个 Github 问题 https://github.com/electron/electron/issues/1529 中得到了帮助。