node-oracledb安装记录

node-oracledb安装记录

windows版本按装记录 适用于 [email protected]
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.0
instantclient-sdk-windows.x64-12.1.0.2.0

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

4.设置环境变量:

Path=D:\instantclient_12_1
OCI_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 configure
node-gyp build

测试代码:

var oracledb = require('oracledb');

// Get a non-pooled connection
oracledb.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 needed
function doRelease(connection)
{
    connection.close(console.info);
}

你可能感兴趣的:(nodejs)