我们正在尝试在 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
似乎有两种可能的解决方案:

  • 获取 rpm 以将 Instantclient 安装到 /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 库:

  • 使用安装时环境变量 $OCI_LIB_DIR 和 $OCI_INC_DIR
  • 在安装的最高版本 Instant Client RPM 中
  • 在 $ORACLE_HOME 中
  • 在/opt/oracle/instantclient

  • 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/

    10-09 07:05