dufourgilles / knx-ip

KNX IP Gateway protocol implementation
30 stars 9 forks source link

ERROR TypeError: dgram_1.default.createSocket is not a function #22

Open regetskcob opened 6 months ago

regetskcob commented 6 months ago

The following code...

  connect() {

    // Create tunnel socket with source knx address 1.1.100
    const knxClient = new KNXTunnelSocket("1.1.31");

    knxClient.on(KNXTunnelSocket.KNXTunnelSocketEvents.error, err => {
        if (err) {
            console.log(err);
        }
    });

    // Call discoverCB when a knx gateway has been discovered.
    knxClient.on(KNXTunnelSocket.KNXTunnelSocketEvents.discover,  info => {
        const [ip,port] = info.split(":");
        discoverCB(ip,port);
    });

    // start auto discovery on interface with ip 192.168.1.99
    knxClient.startDiscovery("192.168.178.28");

    const handleBusEvent = function(srcAddress: string, dstAddress: string, npdu: NPDU) {
      console.log(`${srcAddress.toString()} -> ${dstAddress.toString()} :`, npdu.dataValue);
    };

    const discoverCB = (ip: string, port: number) => {
      console.log("Connecting to ", ip, port);

      // Connect to the knx gateway on ip:port
      knxClient.connectAsync(ip, port)
          .then(() => console.log("Connected through channel id ", knxClient.channelID))
          .then(() => {
              console.log("Starting bus monitoring");
              knxClient.on("indication", handleBusEvent);
              knxClient.monitorBus()
          })
          .catch(err => {console.log(err);})
      };
  }

... is producing an error/exception inside the KNXClient code:

ERROR TypeError: dgram_1.default.createSocket is not a function
    at new _KNXClient (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/knx-ip/lib/KNXClient.js:59:46)
    at new KNXTunnelSocket (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/knx-ip/lib/KNXTunnelSocket.js:45:27)
    at _HeaderComponent.connect (/Users/dbocksteger/Development/experimental/knx-tools/src/app/header/header.component.ts:19:23)
    at HeaderComponent_Template_button_click_8_listener (/Users/dbocksteger/Development/experimental/knx-tools/src/app/header/header.component.html:11:44)
    at executeListenerWithErrorHandling (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/@angular/core/fesm2022/core.mjs:24632:16)
    at wrapListenerIn_markDirtyAndPreventDefault (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/@angular/core/fesm2022/core.mjs:24665:22)
    at HTMLButtonElement.<anonymous> (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs:751:112)
    at _ZoneDelegate.invokeTask (/Users/dbocksteger/Development/experimental/knx-tools/node_modules/zone.js/fesm2015/zone.js:402:31)
    at /Users/dbocksteger/Development/experimental/knx-tools/node_modules/@angular/core/fesm2022/core.mjs:14397:55
    at AsyncStackTaggingZoneSpec.onInvokeTask (http://localhost:4200/@fs/Users/dbocksteger/Development/experimental/knx-tools/.angular/cache/17.0.9/vite/deps/chunk-NE4IP3RO.js?v=a8b42ffe:12326:30) {stack: 'TypeError: dgram_1.default.createSocket is no…e/deps/chunk-NE4IP3RO.js?v=a8b42ffe:12326:30)', message: 'dgram_1.default.createSocket is not a function'}
Screenshot 2024-01-06 at 21 55 48

May you be able providing me help to solve this error? what is going wrong there?

dufourgilles commented 6 months ago

Do not install with ng. knx-ip is a pure backend lib. No reason to use ng. Try with a simple npm install.