繁体   English   中英

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

[英]Getting an Error when developing an App on node.js in windows machine and deploying on cloud with the backend Oracle DB

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

[ERR] DPI-1047:找不到 64 位 Oracle 客户端库:“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 数据库,则从 [ERR] http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html安装 Instant Client Basic 或 Basic Light 包

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

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

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

错误 URL 链接显示了如何为 QAT 环境执行此操作。 最简单的方法是在消息中链接到的 Instant Client。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM