hgourvest / node-firebird

Pure javascript and asynchronous Firebird client for Node.js.
Mozilla Public License 2.0
258 stars 130 forks source link

deno #320

Open paulhendrix opened 11 months ago

paulhendrix commented 11 months ago

test.js:

import * as fb from "npm:node-firebird";

let options = {}; options.host = "localhost"; options.port = 3050; options.database = "test1"; options.user = "SYSDBA"; options.password = "masterkey";

fb.attach(options, function (err, db) { console.log("debug1"); });

deno run -A test.js

under deno callback is never called, under node.js works ok

diegompbh commented 7 months ago

Has anyone resolved this problem? Some silent error occurs on this line:

cb.response.removeAllListeners('error');

File: connection.js Line: 1799

image

paulhendrix commented 6 months ago

I managed to trace the internal error that occurs, and the cause is a missing function 'removeAllListeners'. Now, how can we fix it?

TypeError: cb.response.removeAllListeners is not a function at exports.Connection.Connection.attach (file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:3687:21) at file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:1757:25 at cb (file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:3615:13) at doCallback (file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:1368:5) at file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:3140:21 at decodeResponse (file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:3419:24) at Socket. (file:///test/firebird/problem_deno/node_modules/.deno/node-firebird@1.1.8/node_modules/node-firebird/lib/index.js:3115:13) at Socket.emit (ext:deno_node/_stream.mjs:1851:9) at addChunk (ext:deno_node/_stream.mjs:2873:16) at readableAddChunk (ext:deno_node/_stream.mjs:2852:13) {stack: 'TypeError: cb.response.removeAllListeners is …eAddChunk (ext:deno_node/_stream.mjs:2852:13)', message: 'cb.response.removeAllListeners is not a function', __callSiteEvals: Array(10)}

diegompbh commented 6 months ago

I haven't tested it enough yet, but I at least got it working. Everywhere socket functions are used, I added ._socket. And I manually set it where I saw it was undefined. Example:

image

The solution, at least temporarily, may be along this way.

paulhendrix commented 6 months ago

Great! I will test it and let you know

diegompbh commented 3 months ago

With the update to version 1.1.9, I had to redo the changes. I will attach the files here. I haven't done a full test yet, but it appears to be working.

lib.zip

pwypustek commented 2 months ago

Your change appears to be working correctly in both Deno and Node.js. It would be great if we could update this change in the official version of node-firebird, or alternatively, add the improved node-firebird module to https://jsr.io ?

pwypustek commented 1 month ago

I've noticed another problem with handling the pool in the file pool.js db.on('detach'...
=>
db._socket.on('detach'...