在Windows计算机上的node.js上开发应用程序并使用后端Oracle DB在云上进行部署时遇到错误

时间:2019-06-04 23:26:00

标签: node.js node-modules oracledb oracledb-npm node-oracledb

我正在使用node.js开发一个应用程序。开发环境位于连接到Oracle DB的Windows操作系统上,而QAT环境位于具有Linux风格的云上。它非常适合开发人员,涉及QAT时,会引发以下错误。想在QAT部署之前能否捆绑oracledb

[ERR] DPI-1047:无法找到64位Oracle Client库:“ libclntsh.so:无法打开共享库文件:没有这样的文件或目录”。       请参阅https://oracle.github.io/odpi/doc/installation.html#linux以获得帮助 [ERR] Node-oracledb安装说明:https://oracle.github.io/node-oracledb/INSTALL.html [ERR]您必须在LD_LIBRARY_PATH中具有64位Oracle客户端库,或使用ldconfig对其进行配置。 [ERR]如果此计算机上没有Oracle数据库,请从以下位置安装Instant Client Basic或Basic Light软件包: [ERR] http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

我试图设置LIB PATH。它没有帮助。

2 个答案:

答案 0 :(得分:0)

一旦进入QAT,您是否尝试过npm install?我相信依赖于node-gyp的软件包通常会进行一些编译,并且会依赖于当前的操作系统。

答案 1 :(得分:0)

错误消息看起来很清楚:您需要为Linux安装64位Oracle客户端库。您已经在Windows的开发机器上拥有了这些。

错误URL链接显示了如何在QAT环境中进行操作。最简单的是即时消息中链接到的Instant Client。

从技术上讲,您可以将Linux库与该应用程序捆绑在一起,但是您将需要以某种方式设置操作系统库搜索路径,例如LD_LIBRARY_PATH,然后再调用您的应用。您可以使用包装器外壳脚本执行此操作:

#!/bin/sh
export LD_LIBRARY_PATH=/whatever/instantclient_19_3
node myapp.js

这可能会造成混乱,并且在部署时还需要上传所有Instant Client库。

对于Linux,我建议将Instant Client作为基本OS的一部分,并使其成为拥有计算机的要求。您可以安装Instant Client RPM,而无需任何点击操作,请参阅此Dockerfile