在节点上开发应用程序时出错.js在Windows机器中,并使用后端Oracle DB在云上部署



我正在使用node.js开发一个应用程序。开发环境在Windows操作系统上连接到Oracle DB,而QAT环境位于具有Linux风格的云上。它在开发上完美运行,当涉及到 QAT 时,它会抛出以下错误。想在QAT中部署之前是否可以捆绑oracledb

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

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

你到达QAT后试过npm安装吗?我相信依赖node-gyp的软件包通常会进行一些编译,并且依赖于当前的操作系统。

错误消息看起来很清楚:您需要为 Linux 安装 64 位 Oracle 客户端库。 你已经在适用于 Windows 的开发计算机上安装了这些内容。

错误 URL 链接显示如何为 QAT 环境执行此操作。 最简单的是消息中链接到的即时客户端。

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

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

这可能会变得混乱,并且您还需要在部署时上传所有即时客户端库。

对于Linux,我建议将Instant Client视为基本操作系统的一部分,并将其作为机器的要求。 您可以安装即时客户端 RPM,而无需任何点击,请参阅此 Dockerfile。

最新更新