先决条件: 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>
多数是因为生成的工程文件是 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。