Sails Waterline Oracle - 安装 sails-oracle-database - 关于 oci/version 的错误
Sails Waterline Oracle - installing sails-oracle-database - Error regarding oci/version
我是一名 Grails(使用 Oracle)开发人员,正在试验 Sails.js
我在安装 waterline oracle 适配器时遇到问题。我可以使用 Mac OS 使用独立节点应用程序复制的步骤:
遵循 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx
上的说明
我使用 cp instantclient_12_2/{libclntsh.dylib.12.1,libclntshcore.dylib.12.1,libons.dylib 将 Oracle 基本客户端文件放在我的 ~/lib 文件夹中,libnnz12.dylib,libociei.dylib}~/lib/
在我的节点应用程序中,我可以通过 运行ning 安装 oracle 附加组件:npm install oracledb
然后我可以 运行 他们提供的示例,例如通过执行 "node select1.js" 并且它成功连接到数据库并且 运行 很好,等等
然后我尝试通过以下方式安装水线 oracle 适配器:npm install sails-oracle-database
它给出了这个错误:
>oracledb@1.13.1 install /Users/myuser/Documents/node/oracle/node_modules/sails-oracle-database/node_modules/oracledb
>node-gyp rebuild
node-oracledb ERR! Error: Cannot find /opt/oracle/instantclient/libclntsh.dylib
node-oracledb ERR! Error: Do you need to run 'cd /opt/oracle/instantclient && ln -s libclntsh.dylib.* libclntsh.dylib'?
node-oracledb ERR! Error: See https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx
gyp: Call to 'INSTURL="https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx"; ERR="node-oracledb ERR! Error:"; if [ -z $OCI_LIB_DIR ]; then if [ -f /opt/oracle/instantclient/libclntsh.dylib ]; then echo "/opt/oracle/instantclient/"; else echo "$ERR Cannot find /opt/oracle/instantclient/libclntsh.dylib" >&2; echo "$ERR Do you need to run 'cd /opt/oracle/instantclient && ln -s libclntsh.dylib.* libclntsh.dylib'?" >&2; echo "$ERR See $INSTURL" >&2; echo "" >&2; fi; else if [ -f "$OCI_LIB_DIR/libclntsh.dylib" ]; then echo $OCI_LIB_DIR; else echo "$ERR Cannot find $OCI_LIB_DIR/libclntsh.dylib" >&2; echo "$ERR Do you need to run 'cd $OCI_LIB_DIR && ln -s libclntsh.dylib.* libclntsh.dylib'?" >&2; echo "$ERR See $INSTURL" >&2; echo "" >&2; fi; fi;' returned exit status 0 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:336:16)
gyp ERR! stack at emitTwo (events.js:125:13)
gyp ERR! stack at ChildProcess.emit (events.js:213:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
正在尝试弄清错误...它似乎要我设置环境变量,例如:OCI_LIB_DIR
但是,它引用的 oracle 页面上的说明说不再需要 oracle-node 2 版本。 waterline-oracle 适配器是否可能与此版本不兼容?
您还需要oracle 即时客户端的SDK 包。如果您的即时客户端目录已经有一个 "sdk" 文件夹,那么您就设置好了。接下来是将其复制到您的“/opt/oracle/instantclient”目录。
➜ instantclient pwd
/opt/oracle/instantclient
➜ instantclient ls
BASIC_README glogin.sql libnnz12.dylib libocijdbc12.dylib libsqlplusic.dylib uidrvci
SQLPLUS_README libclntsh.dylib libocci.dylib libons.dylib ojdbc8.jar xstreams.jar
adrci libclntsh.dylib.12.1 libocci.dylib.12.1 liboramysql12.dylib sdk
genezi libclntshcore.dylib.12.1 libociei.dylib libsqlplus.dylib sqlplus
我是一名 Grails(使用 Oracle)开发人员,正在试验 Sails.js
我在安装 waterline oracle 适配器时遇到问题。我可以使用 Mac OS 使用独立节点应用程序复制的步骤:
遵循 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx
上的说明我使用 cp instantclient_12_2/{libclntsh.dylib.12.1,libclntshcore.dylib.12.1,libons.dylib 将 Oracle 基本客户端文件放在我的 ~/lib 文件夹中,libnnz12.dylib,libociei.dylib}~/lib/
在我的节点应用程序中,我可以通过 运行ning 安装 oracle 附加组件:npm install oracledb
然后我可以 运行 他们提供的示例,例如通过执行 "node select1.js" 并且它成功连接到数据库并且 运行 很好,等等
然后我尝试通过以下方式安装水线 oracle 适配器:npm install sails-oracle-database
它给出了这个错误:
>oracledb@1.13.1 install /Users/myuser/Documents/node/oracle/node_modules/sails-oracle-database/node_modules/oracledb
>node-gyp rebuild
node-oracledb ERR! Error: Cannot find /opt/oracle/instantclient/libclntsh.dylib
node-oracledb ERR! Error: Do you need to run 'cd /opt/oracle/instantclient && ln -s libclntsh.dylib.* libclntsh.dylib'?
node-oracledb ERR! Error: See https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx
gyp: Call to 'INSTURL="https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instosx"; ERR="node-oracledb ERR! Error:"; if [ -z $OCI_LIB_DIR ]; then if [ -f /opt/oracle/instantclient/libclntsh.dylib ]; then echo "/opt/oracle/instantclient/"; else echo "$ERR Cannot find /opt/oracle/instantclient/libclntsh.dylib" >&2; echo "$ERR Do you need to run 'cd /opt/oracle/instantclient && ln -s libclntsh.dylib.* libclntsh.dylib'?" >&2; echo "$ERR See $INSTURL" >&2; echo "" >&2; fi; else if [ -f "$OCI_LIB_DIR/libclntsh.dylib" ]; then echo $OCI_LIB_DIR; else echo "$ERR Cannot find $OCI_LIB_DIR/libclntsh.dylib" >&2; echo "$ERR Do you need to run 'cd $OCI_LIB_DIR && ln -s libclntsh.dylib.* libclntsh.dylib'?" >&2; echo "$ERR See $INSTURL" >&2; echo "" >&2; fi; fi;' returned exit status 0 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:336:16)
gyp ERR! stack at emitTwo (events.js:125:13)
gyp ERR! stack at ChildProcess.emit (events.js:213:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
正在尝试弄清错误...它似乎要我设置环境变量,例如:OCI_LIB_DIR 但是,它引用的 oracle 页面上的说明说不再需要 oracle-node 2 版本。 waterline-oracle 适配器是否可能与此版本不兼容?
您还需要oracle 即时客户端的SDK 包。如果您的即时客户端目录已经有一个 "sdk" 文件夹,那么您就设置好了。接下来是将其复制到您的“/opt/oracle/instantclient”目录。
➜ instantclient pwd
/opt/oracle/instantclient
➜ instantclient ls
BASIC_README glogin.sql libnnz12.dylib libocijdbc12.dylib libsqlplusic.dylib uidrvci
SQLPLUS_README libclntsh.dylib libocci.dylib libons.dylib ojdbc8.jar xstreams.jar
adrci libclntsh.dylib.12.1 libocci.dylib.12.1 liboramysql12.dylib sdk
genezi libclntshcore.dylib.12.1 libociei.dylib libsqlplus.dylib sqlplus