I am trying to use node-red-contrib-odbc which requires the node-odbc node.
I am getting "TypeError: Pool is not a constructor" in this line: this.pool = new Pool();
I am pasting the contents from odbc.js for more context.
module.exports = function(RED) {
"use strict";
var mustache = require("mustache");
var Pool = require("odbc").Pool;
function connection(config) {
RED.nodes.createNode(this, config);
this.cn = "";
if (config.driver!=""){
this.cn = this.cn + "DRIVER="+config.driver + ";"
}
if (config.server!=""){
this.cn = this.cn + "SERVER="+config.server + ";"
}
if (this.credentials.username!=""){
this.cn = this.cn + "USER="+ this.credentials.username + ";"
}
if (this.credentials.password != ""){
this.cn = this.cn + "PASSWORD="+ this.credentials.password + ";"
}
this.cn = this.cn + config.other;
this.pool = new Pool();
var node = this;
}
What do I need to change here to make it work?
Sorry if this appears too trivial a question. Stating the obvious - total Node-red noob here.
Its an industrial automation software which has to be accessed over ODBC or OLEDB.
OLEDB needs access via COM, hence I wanted to avoid using in Node-Red as it would bring more complications.
Node-red is a great tool, but node maintenance is becoming an issue it seems.
I just felt that there was a minor detail in the ODBC node which could fix this issue. E.g. the Pool class needs a connection string I think, which is not visible in the line > this.pool = new Pool();
I'm not an expert on the nuances of Node.js, but it could be that your "require" needs to use a different name. You have two uses of "Pool" :
versus :
You could either use a different var name, or possibly you need "new Pool.Pool()". (As I said, I'm no expert, but in other languages this would likely be flagged as an error.)
the problem comes from the fact its package.json lists its dependency on the odbc module as this:
"odbc": ">=0.6.11",
This means it will accepy anything newer than (or equal to) version 0.6.11. The odbc module is currently on version 2.2.2 - which means its had two major breaking version releases since the version the node was written for.
A quick fix would be to change the package.json file to install a version of odbc that is more likely to be compatible. For example, change ">=0.6.11" to "<1.0". Then run npm install from that directory.
Otherwise, it's a case of reading up on the odbc module and learning what changes it made in its 2.x branch and then updating the node's code to match.