Win8.1下Node.js连接oracle
1、 安装oracle(10g、11g)。
2、 安装microsoft visual studio2012 express,是免费的
(不能是2010,编译过后会出现未知错误)
3、 安装Node.js(最新版本)
4、 安装oracle instant client(系统是64位的下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 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖.
5、设置系统环境变量(细心设置就行了)
OCI_INCLUDE_DIR=C:\instantclient_12_1\sdk\include
OCI_LIB_DIR=C:\instantclient_12_1\sdk\lib\msvc\vc11
OCI_VERSION=12
Path=...;c:\instantclient_12_1\vc11;c:\instantclient_12_1
确保 Path 中 c:\instantclient_12_1\vc11 在 c:\instantclient_12_1 前面
6、此时还要安装一下python(2.7版本的)。
安装完后,再配置一下环境变量Path:D:\program file\python 即是在path中加入python的安装路径。
7、 如果gyp没有安装需要安装,npm install -g node-gyp
8、 最后就可以测试能否连接上了
1. 配置package.json
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"oracle" : "*"
}
}
2. 配置testnode.js
var oracle = require('oracle');
var connectData = {
hostname: "localhost",
port: 1521,
database: "MLDN", // System ID (SID)
user: "scott",
password: "tiger"
}
oracle.connect(connectData, function(err, connection) {
if (err) { console.log("Error connecting to db:", err); return; }
connection.execute("SELECT * FROM emp", [], function(err, results) {
if (err) { console.log("Error executing query:", err); return; }
console.log(results);
connection.close(); // call only when query is finished executing
});
});
3. 在测试目录下还需要建一个空文件夹,命名为node_modules,否则提示找不到文件夹,无法安装oracle模块。
4. 在命令行中进入测试目录,运行npm install oracle会有一些类似警告,不过不影响最后运行
C:\Users\道衍\.node-gyp\0.10.31\deps\v8\include\v8.h(184): warning C4506: 内联函
数“v8
::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [D:\test\testnod
e-or
acle\node_modules\oracle\build\oracle_bindings.vcxproj]
with
[
T=v8::FunctionTemplate
] (..\src\outParam.cpp)
C:\Users\道衍\.node-gyp\0.10.31\deps\v8\include\v8.h(184): warning C4506: 内联函
数“v8
::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [D:\test\testnod
e-or
acle\node_modules\oracle\build\oracle_bindings.vcxproj]
5. 运行node testnode,看是否成功。