node链接oracle遇到的坑,脑细胞不够用了,求大神支招
发布于 9 年前 作者 CarlosRen 8322 次浏览 最后一次编辑是 8 年前 来自 问答

先决条件: 32位win7,有vs2013,oracle11gclient ,python 27 , node

执行步骤 根据https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 1、安oracle 11g express 【这是个什么卵玩意】 2、安装vs2012 express 【这又是个什么卵玩意】 然后又把http://my.oschina.net/zenglingfan/blog/164390 这个的 (1). 安装 Oracle instant client 这是 Oracle 提供的访问数据库的 C++接口, windows 64位在这里下载 Version 12.1.0.1.0 中的 instantclient-basic-windows.x64-12.1.0.1.0.zip和instantclient-sdk-windows.x64-12.1.0.1.0.zip; 并把它们解压到 C:\instantclient_12_1 文件夹中, 由于两个 zip 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖. 这步搞了 然后。。。 npm装oracledb。。。 然后。。。 跪了。。。

===================下面是cmd抛出的问题===================

Microsoft Windows [版本 6.1.7601] 版权所有 © 2009 Microsoft Corporation。保留所有权利。

C:\Users\carlos>npm install -g oracledb npm http GET https://registry.npmjs.org/oracledb npm http 304 https://registry.npmjs.org/oracledb

oracledb@0.4.1 install C:\Users\carlos\AppData\Roaming\npm\node_modules\orac ledb node-gyp rebuild

C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb>node "D:\nodejs\node modules\npm\bin\node-gyp-bin\…\node_modules\node-gyp\bin\node-gyp.js" rebu ild 在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。 njsConnection.cpp njsOracle.cpp njsMessages.cpp njsPool.cpp D:\Program Files\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc (…\src\njs\src\n jsMessages.cpp) [C:\U sers\carlos\AppData\Roaming\npm\node_modules\oracledb\build\oracledb.vcxproj] dpiDateTimeArrayImpl.cpp …\src\dpi\src\dpiDateTimeArrayImpl.cpp(30): fatal error C1083: 无法打开包括文件 : “orat ypes.h”: No such file or directory [C:\Users\carlos\AppData\Roaming\npm\node

modules\oracledb\build\oracledb.vcxproj] dpiException.cpp dpiExceptionImpl.cpp D:\Program Files\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc (…\src\dpi\src\d piExceptionImpl.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\build\oracledb.vcx proj] dpiEnv.cpp C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\src\dpi\src\dpiEnvI mpl.h(30): fatal error C1083: 无法打开包括文件: “oci.h”: No such file or direc tory (…
src\dpi\src\dpiEnv.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_modules\ora cledb\build\oracledb.vcxproj] dpiConnImpl.cpp …\src\dpi\src\dpiConnImpl.cpp(28): fatal error C1083: 无法打开包括文件: “oraty pes.h”: No such file or directory [C:\Users\carlos\AppData\Roaming\npm\node_modules\o racledb\build\oracledb.vcxproj] dpiEnvImpl.cpp …\src\dpi\src\dpiEnvImpl.cpp(28): fatal error C1083: 无法打开包括文件: “oratyp es.h”: N o such file or directory [C:\Users\carlos\AppData\Roaming\npm\node_modules\or acledb\build\oracledb.vcxproj] dpiUtils.cpp C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\src\dpi\src\dpiUtil s.h(30): fatal error C1083: 无法打开包括文件: “oci.h”: No such file or directo ry (…\sr c\dpi\src\dpiUtils.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_modules\ora cledb\build\oracledb.vcxproj] dpiStmtImpl.cpp …\src\dpi\src\dpiStmtImpl.cpp(33): fatal error C1083: 无法打开包括文件: “oraty pes.h”: No such file or directory [C:\Users\carlos\AppData\Roaming\npm\node_modules\o racledb\build\oracledb.vcxproj] dpiPoolImpl.cpp …\src\dpi\src\dpiPoolImpl.cpp(29): fatal error C1083: 无法打开包括文件: “oraty pes.h”: No such file or directory [C:\Users\carlos\AppData\Roaming\npm\node_modules\o racledb\build\oracledb.vcxproj] D:\Program Files\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc (…\src\njs\src\n jsConnection.cpp) [C: \Users\carlos\AppData\Roaming\npm\node_modules\oracledb\build\oracledb.vcxpro j] D:\Program Files\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc (…\src\njs\src\n jsPool.cpp) [C:\Users \carlos\AppData\Roaming\npm\node_modules\oracledb\build\oracledb.vcxproj] D:\Program Files\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc (…\src\njs\src\n jsOracle.cpp) [C:\Use rs\carlos\AppData\Roaming\npm\node_modules\oracledb\build\oracledb.vcxproj] C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\src\dpi\include\dpi Stmt.h(29): fatal error C1083: 无法打开包括文件: “oci.h”: No such file or dire ctory (… \src\njs\src\njsOracle.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_modules \oracledb\build\oracledb.vcxproj] C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\src\dpi\include\dpi Stmt.h(29): fatal error C1083: 无法打开包括文件: “oci.h”: No such file or dire ctory (… \src\njs\src\njsPool.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_modules\o racledb\build\oracledb.vcxproj] C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb\src\dpi\include\dpi Stmt.h(29): fatal error C1083: 无法打开包括文件: “oci.h”: No such file or dire ctory (… \src\njs\src\njsConnection.cpp) [C:\Users\carlos\AppData\Roaming\npm\node_mod ules\oracledb\build\oracledb.vcxproj] gyp ERR! build error gyp ERR! stack Error: C:\Program Files\MSBuild\12.0\bin\msbuild.exe failed wit h exit code: 1 gyp ERR! stack at ChildProcess.onExit (D:\nodejs\node_modules\npm\node_modul es\node-gyp\lib\build.js:267:23) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:797:

gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command “node” “D:\nodejs\node_modules\npm\node_modules\node-gyp\ bin\node-gyp.js” "rebuild" gyp ERR! cwd C:\Users\carlos\AppData\Roaming\npm\node_modules\oracledb gyp ERR! node -v v0.10.26 gyp ERR! node-gyp -v v0.12.2 gyp ERR! not ok npm ERR! oracledb@0.4.1 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the oracledb@0.4.1 install script. npm ERR! This is most likely a problem with the oracledb package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls oracledb npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601 npm ERR! command “D:\nodejs\\node.exe” “D:\nodejs\node_modules\npm\bin\n pm-cli.js” “install” “-g” "oracledb" npm ERR! cwd C:\Users\carlos npm ERR! node -v v0.10.26 npm ERR! npm -v 1.4.3 npm ERR! code ELIFECYCLE npm ERR! npm ERR! Additional logging details can be found in: npm ERR! C:\Users\carlos\npm-debug.log npm ERR! not ok code 0

C:\Users\carlos>

7 回复

多数是因为生成的工程文件是 vs2012 的。 找到包的 github 地址 git clone 到本地 进入目录 node-gyp configure build 会生成 build 文件夹,这里面就是针对你平台生成的源码工程文件。 进入它,找到 vs 的 sln 文件,用你装的 vs2013 打开它,提示升级。 然后手动编译,看到提示什么错误就解决什么错误。(利用google,bing也能凑合,度娘就算了……) 完成后,回到命令行,把整个目录移动到你的目标 node_modules 文件夹里

@klesh node-gyp 我这里没装过。。有影响吗?npm install -g node-gyp 之后 显示不是内部或外部命令

node-gyp 是 npm 带的,打包在 node.js 安装包里面,不用另外安装。 注意看你的出错信息。上面就是 node-gyp.js 执行过程中出错了。

@klesh 已经解决了 32位不支持 是我node的版本低吗?我是npm install的

@CarlosRen 不明白你的意思,32位不支持? gyp ERR! node -v v0.10.26 这一行有显示你的 node.js 版本,现在最新是0.12.3 官网下的 node.js for windows 安装包是有带 npm 的,你说 npm install 的是指哪个?

@klesh 32位不支持node-oracle,导致了上述问题,已经close
node-gyp我的两台电脑都是显示不是内部或外部命令,我用npm install -g node-gyp安装的,是我node的版本低吗? 另外请教个事,node可以升级吗?有命令吗?

直接上 nodejs.org 下载个新版的安装包装一下应该就可以了。 安装包带有 npm 和 node-gyp 不需要另外安装,也会设定好 path 变量,新开的 cmd 一般就直接应用新的 path 变量,这样应该就可以访问到 node-gyp 的了。不行试下注销或重启。 如果不行,就检查下 path 环境变量,右击计算机,属性,高级系统设置,环境变量,把 node-gyp 所在的目录追加到尾部,再开新的 cmd。

回到顶部