node-oracledb安装记录

来源:互联网 发布:淘宝问答 编辑:程序博客网 时间:2024/06/10 22:50

node-oracledb安装记录

windows版本按装记录 适用于 oracledb@1.12.2
linux版本与windows的差异在于第一步,编译环境的设置,请参考node-gyp安装手册


1. 下载编译模块,有两种编译模块可用,第一种为直接使用npm安装windows-bulid-tools,第二种为手动安装编译器。

  • npm install –global –production windows-build-tools(很慢,几个小时都有可能)
  • 手动下载安装Visual C++ Build Tools与Python 2.7,然后执行npm config set msvs_version 2015(这种经过多次尝试,不是很靠普)

2.按装node-gyp模块,这是一个node编译C++工程的模块。

npm install node-gyp -g

3.下载instantclient_12_1,请下载对应系统版本,操作系统版本,oracle对应版本

官方下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index.html

instantclient-basiclite-windows.x64-12.1.0.2.0instantclient-sdk-windows.x64-12.1.0.2.0

下载后,将两个文件解压到同一个目录。

4.设置环境变量:

Path=D:\instantclient_12_1OCI_INC_DIR=D:\instantclient_12_1\sdk\include\OCI_LIB_DIR=D:\instantclient_12_1\sdk\lib\msvc\

这里需要注意的是,instantclient_12_1所在目录,不可以有空格,否则会导致工程无法正常使用

5.下载oracledb模块

npm install oracledb --save

下载完成后,会自动编译一次,但编译出来的可能无法正常使用,需要重新编译。

6.重新编译

进入到node_modules/oracledb目录。执行指令

node-gyp configurenode-gyp build

测试代码:

var oracledb = require('oracledb');// Get a non-pooled connectionoracledb.getConnection(    {        user: "*******",        password: "*******",        connectString: "IP:port/schema"    },    function (err, connection)    {        if (err)        {            console.error(err.message);            return;        }        connection.execute("select * from channel_info t", [], function (err, result)        {            if (err)            {                console.error(err.message);                doRelease(connection);                return;            }            console.log(result.metaData);            console.log(JSON.stringify(result.rows.map((v)=>            {                return result.metaData.reduce((p, key, i)=>                {                    p[key.name] = v[i];                    return p;                }, {})            })));            doRelease(connection);        });    });// Note: connections should always be released when not neededfunction doRelease(connection){    connection.close(console.info);}