Node.js OracleDB NodeJS模块连接池未与模块共享

Node.js OracleDB NodeJS模块连接池未与模块共享,node.js,typescript,node-modules,node-oracledb,Node.js,Typescript,Node Modules,Node Oracledb,我觉得我错过了一些明显的东西,但我正在努力做的似乎应该奏效 我有一个主项目(服务器),我正在尝试对它的各个组件进行模块化,第一个是使用节点OracleDB模块在Oracle队列上发送/接收消息的模块(AQ) 服务器项目使用别名dbpool1初始化数据库连接池。别名存储在节点配置模块读取的配置文件中。在服务器项目中,运行一些数据库查询,然后从AQ模块调用AQ.Receive()。我正在通过一个从'@company/AQ'导入AQ的导入AQ模块在文件开头调用 在AQcodebase中,Receive

我觉得我错过了一些明显的东西,但我正在努力做的似乎应该奏效

我有一个主项目(服务器),我正在尝试对它的各个组件进行模块化,第一个是使用节点OracleDB模块在Oracle队列上发送/接收消息的模块(AQ)

服务器项目使用别名
dbpool1
初始化数据库连接池。别名存储在节点配置模块读取的配置文件中。在服务器项目中,运行一些数据库查询,然后从
AQ
模块调用
AQ.Receive()
。我正在通过一个从'@company/AQ'导入AQ的
导入
AQ
模块在文件开头调用

AQ
codebase中,
Receive
函数只包含一个
OracleDB.getConnection(poolAlias)
调用-我并不是在这里初始化数据库,因为我假设在调用
AQ
模块之前,池是在主项目代码库中初始化的。但是,此调用返回一个错误,表示找不到池

如果我将在服务器项目中创建DB连接池时创建的
对象作为参数传递给
AQ.receive
,对
pool.getConnection()的调用将正常工作


导入的模块是否与执行导入的代码共享状态/内存/任何内容,或者我是否需要重新初始化连接(或将其作为参数传递给我要导入的模块)?

节点oracledb应作为一个单例工作-在一个Node.js进程中应该只有一个实例。在一个模块中创建的池应该可以在另一个模块中访问(我们添加了池缓存以防止您为此创建自己的模块)。我猜这是一个时间问题(您试图在创建池之前访问池)。在继续处理之前,是否正在等待创建池的调用?如果是这样,则可能是配置问题(您尝试使用给定的别名,但无效)。创建池后,使用
console.log(pool.poolAlias)
进行检查。我们没有深入研究ECMAScript模块和节点oracledb,但基本思想是C结构(例如连接池)的共享不会像使用标准
require()
模块那样跨模块工作。