我们正在尝试在 Amazon Elastic Beanstalk 实例上安装 Node 模块 oracledb
。
我们可以让 oracledb
在本地正常工作,我们已经到了 Beanstalk 实例通过 rpms 安装 Instantclient 的地步。我们现在坚持的是 npm install
期望要么使用 LD_LIBRARY_PATH
要么让 Instantclient 在 /opt/oracle/instantclient
中。目前,rpms 将其安装到 /usr/lib/oracle/12.1/client64
似乎有两种可能的解决方案:
/opt/oracle/instantclient
或在事后移动/链接它 LD_LIBRARY_PATH
环境变量,以便 npm install
知道使用来自 /usr/lib/oracle/12.1/client64
不过,我们不知道如何在 Beanstalk 配置中正确地执行这些操作。
我找不到关于 Beanstalk 实例何时实际运行
npm install
的任何信息,我们没有明确告诉它这样做,但它正在运行。通过环境属性更改环境变量 as the documentation suggests here 不起作用 。看似这些仅在服务器实际运行时设置
LD_LIBRARY_PATH=x node app.js
它们不用于
npm install
。我们如何更新我们的弹性 beanstalk 配置以将即时客户端放在我们想要的位置或在
LD_LIBRARY_PATH
期间设置 npm install?
最佳答案
在 Linux 上安装 node-oracledb v1 时,安装会按以下顺序查找 Oracle 库:
见 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv
您可以在 https://github.com/oracle/node-oracledb/blob/master/binding.gyp 中看到执行此操作的逻辑
所以这个问题的前提是不正确的,你不需要更改 Instant Client。使用 Instant Client RPM,您不需要在运行“npm install oracledb”时设置环境变量,也不需要在运行时设置 LD_LIBRARY_PATH。上面的链接有详细信息。
问题是,您的安装失败的原因是什么?
更新:使用 node-oracledb v2,您确实需要设置 ORACLE_HOME(仅适用于完整的 Oracle 安装)或使用 LD_LIBRARY_PATH 或使用 ldconfig,如 installation manual 中所述
关于node.js - Elastic Beanstalk 上的环境变量/oracledb,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29436994/