NEWS
[gelöst] Fehler bei Verwendung des 'net' Modules
-
Hallo,
ich möchte in einem JS ein paar TCP-Daten an einen Server schicken.
Dazu wollte ich das 'net' Modul von node.js verwenden.Also habe ich in den Instanzeinstellungen des JavaScript-Adapters unter "Additional npm modules" das Modul "net" eingetragen.
Das Log brachte keine Fehler:javascript.0 2025-03-11 12:04:43.952 debug Installed custom library: "net@latest" javascript.0 2025-03-11 12:04:37.797 debug Found custom library in config: "net@latest" javascript.0 2025-03-11 12:04:37.675 debug Installed custom library: "axios@latest" javascript.0 2025-03-11 12:04:31.536 debug Found custom library in config: "axios@latest" javascript.0 2025-03-11 12:04:31.487 debug Installed custom library: "mail-listener4@latest" javascript.0 2025-03-11 12:04:24.925 debug Found custom library in config: "mail-listener4@latest" javascript.0 2025-03-11 12:04:24.923 debug Found installed libraries: ["axios","mail-listener4"] javascript.0 2025-03-11 12:04:24.897 debug Custom libraries in config: "mail-listener4 axios net": ["mail-listener4","axios","net"]Unter Putty sieht es so aus:
pi@raspi4:~ $ node -v v20.18.3 pi@raspi4:~ $ nodejs -v v20.18.3 pi@raspi4:~ $ npm -v 10.8.2 pi@raspi4:~ $ cd /opt/iobroker pi@raspi4:/opt/iobroker $ npm ls --depth 0 iobroker.inst@3.0.0 /opt/iobroker ├── @iobroker-javascript.0/axios@npm:axios@1.8.2 ├── @iobroker-javascript.0/mail-listener4@npm:mail-listener4@1.1.3 ├── @iobroker-javascript.0/net@npm:net@1.0.2 ├── iobroker.adguard@1.0.1 ├── iobroker.admin@7.5.2 ├── iobroker.alexa2@3.26.7 ├── iobroker.backitup@3.1.0 ├── iobroker.daswetter@3.2.3 ├── iobroker.email@1.3.1 ├── iobroker.ical@1.16.1 ├── iobroker.javascript@8.9.1 ├── iobroker.js-controller@7.0.6 ├── iobroker.mqtt@6.1.2 ├── iobroker.ping@1.7.9 ├── iobroker.pvforecast@4.1.0 ├── iobroker.samsung@0.6.1 ├── iobroker.simple-api@2.8.0 ├── iobroker.sonoff@3.2.1 ├── iobroker.tr-064@4.3.0 ├── iobroker.tuya@3.17.0 └── iobroker.zigbee@1.10.14Was mich allerdings gewundert hat:
Unter "/opt/iobroker/node_modules" ist 'net' nicht zu finden? Ich dachte, dies wäre Bestandteil von node.js?Mein JS sieht so aus:
var net = require('net'); // Node.js Modul für TCP-Verbindungen /** * Sendet HEX-Daten an eine angegebene IP-Adresse und Port. * @param {string} ipAddress - Die Ziel-IP-Adresse. * @param {number} port - Der Ziel-Port. * @param {string} hexData - Die HEX-Daten, die gesendet werden sollen. */ function sendHexData(ipAddress, port, hexData) { // Umwandlung der HEX-Daten in ein Buffer-Objekt const bufferData = Buffer.from(hexData, 'hex'); // Verwendung von net.connect() anstelle von new net.Socket() const client = net.connect(port, ipAddress, function() { console.log('Verbunden mit: ${ipAddress}:${port}'); // Senden der HEX-Daten an den Server client.write(bufferData, function() { console.log('Daten gesendet: ${hexData}'); }); }); // Ereignisbehandlung bei Empfang von Daten vom Server client.on('data', function(data) { console.log('Daten empfangen: ' + data.toString()); }); // Ereignisbehandlung bei Verbindungsfehler client.on('error', function(err) { console.error('Verbindungsfehler: ' + err.message); }); // Ereignisbehandlung bei Verbindungsende client.on('close', function() { console.log('Verbindung geschlossen'); }); } // Beispielaufruf der Funktion mit dynamischen Parametern const ipAddress = '192.168.1.243'; // Ziel-IP-Adresse const port = 8899; // Zielport const hexData = '553361390201020A93A2AAAA'; // Funktion mit den obigen Parametern aufrufen sendHexData(ipAddress, port, hexData);Es erzeugt allerdings den Fehler:
TypeError: net.connect is not a functionEine 2. Version des Scriptes:
var net = require('net'); // Node.js Modul für TCP-Verbindungen /** * Sendet HEX-Daten an eine angegebene IP-Adresse und Port. * @param {string} ipAddress - Die Ziel-IP-Adresse. * @param {number} port - Der Ziel-Port. * @param {string} hexData - Die HEX-Daten, die gesendet werden sollen. */ function sendHexData(ipAddress, port, hexData) { // Umwandlung der HEX-Daten in ein Buffer-Objekt const bufferData = Buffer.from(hexData, 'hex'); // Erstellung des TCP-Clients const client = new net.Socket(); // Verbindung mit dem Ziel-Server client.connect(port, ipAddress, function() { console.log('Verbunden mit: ${ipAddress}:${port}'); // Senden der HEX-Daten an den Server client.write(bufferData, function() { console.log('Daten gesendet: ${hexData}'); }); }); // Ereignisbehandlung bei Empfang von Daten vom Server client.on('data', function(data) { console.log('Daten empfangen: ' + data.toString()); }); // Ereignisbehandlung bei Verbindungsfehler client.on('error', function(err) { console.error('Verbindungsfehler: ' + err.message); }); // Ereignisbehandlung bei Verbindungsende client.on('close', function() { console.log('Verbindung geschlossen'); }); } // Beispielaufruf der Funktion mit dynamischen Parametern const ipAddress = '192.168.1.243'; // Ziel-IP-Adresse const port = 8899; // Zielport const hexData = '553361390201020A93A2AAAA'; //HEX-Daten // Funktion mit den obigen Parametern aufrufen sendHexData(ipAddress, port, hexData);Dieses Script bringt den Fehler:
TypeError: net.Socket is not a constructorHätte bitte jemand einen Tipp für mich, wo der Fehler liegt?
Vielen Dank. -
Hallo,
ich möchte in einem JS ein paar TCP-Daten an einen Server schicken.
Dazu wollte ich das 'net' Modul von node.js verwenden.Also habe ich in den Instanzeinstellungen des JavaScript-Adapters unter "Additional npm modules" das Modul "net" eingetragen.
Das Log brachte keine Fehler:javascript.0 2025-03-11 12:04:43.952 debug Installed custom library: "net@latest" javascript.0 2025-03-11 12:04:37.797 debug Found custom library in config: "net@latest" javascript.0 2025-03-11 12:04:37.675 debug Installed custom library: "axios@latest" javascript.0 2025-03-11 12:04:31.536 debug Found custom library in config: "axios@latest" javascript.0 2025-03-11 12:04:31.487 debug Installed custom library: "mail-listener4@latest" javascript.0 2025-03-11 12:04:24.925 debug Found custom library in config: "mail-listener4@latest" javascript.0 2025-03-11 12:04:24.923 debug Found installed libraries: ["axios","mail-listener4"] javascript.0 2025-03-11 12:04:24.897 debug Custom libraries in config: "mail-listener4 axios net": ["mail-listener4","axios","net"]Unter Putty sieht es so aus:
pi@raspi4:~ $ node -v v20.18.3 pi@raspi4:~ $ nodejs -v v20.18.3 pi@raspi4:~ $ npm -v 10.8.2 pi@raspi4:~ $ cd /opt/iobroker pi@raspi4:/opt/iobroker $ npm ls --depth 0 iobroker.inst@3.0.0 /opt/iobroker ├── @iobroker-javascript.0/axios@npm:axios@1.8.2 ├── @iobroker-javascript.0/mail-listener4@npm:mail-listener4@1.1.3 ├── @iobroker-javascript.0/net@npm:net@1.0.2 ├── iobroker.adguard@1.0.1 ├── iobroker.admin@7.5.2 ├── iobroker.alexa2@3.26.7 ├── iobroker.backitup@3.1.0 ├── iobroker.daswetter@3.2.3 ├── iobroker.email@1.3.1 ├── iobroker.ical@1.16.1 ├── iobroker.javascript@8.9.1 ├── iobroker.js-controller@7.0.6 ├── iobroker.mqtt@6.1.2 ├── iobroker.ping@1.7.9 ├── iobroker.pvforecast@4.1.0 ├── iobroker.samsung@0.6.1 ├── iobroker.simple-api@2.8.0 ├── iobroker.sonoff@3.2.1 ├── iobroker.tr-064@4.3.0 ├── iobroker.tuya@3.17.0 └── iobroker.zigbee@1.10.14Was mich allerdings gewundert hat:
Unter "/opt/iobroker/node_modules" ist 'net' nicht zu finden? Ich dachte, dies wäre Bestandteil von node.js?Mein JS sieht so aus:
var net = require('net'); // Node.js Modul für TCP-Verbindungen /** * Sendet HEX-Daten an eine angegebene IP-Adresse und Port. * @param {string} ipAddress - Die Ziel-IP-Adresse. * @param {number} port - Der Ziel-Port. * @param {string} hexData - Die HEX-Daten, die gesendet werden sollen. */ function sendHexData(ipAddress, port, hexData) { // Umwandlung der HEX-Daten in ein Buffer-Objekt const bufferData = Buffer.from(hexData, 'hex'); // Verwendung von net.connect() anstelle von new net.Socket() const client = net.connect(port, ipAddress, function() { console.log('Verbunden mit: ${ipAddress}:${port}'); // Senden der HEX-Daten an den Server client.write(bufferData, function() { console.log('Daten gesendet: ${hexData}'); }); }); // Ereignisbehandlung bei Empfang von Daten vom Server client.on('data', function(data) { console.log('Daten empfangen: ' + data.toString()); }); // Ereignisbehandlung bei Verbindungsfehler client.on('error', function(err) { console.error('Verbindungsfehler: ' + err.message); }); // Ereignisbehandlung bei Verbindungsende client.on('close', function() { console.log('Verbindung geschlossen'); }); } // Beispielaufruf der Funktion mit dynamischen Parametern const ipAddress = '192.168.1.243'; // Ziel-IP-Adresse const port = 8899; // Zielport const hexData = '553361390201020A93A2AAAA'; // Funktion mit den obigen Parametern aufrufen sendHexData(ipAddress, port, hexData);Es erzeugt allerdings den Fehler:
TypeError: net.connect is not a functionEine 2. Version des Scriptes:
var net = require('net'); // Node.js Modul für TCP-Verbindungen /** * Sendet HEX-Daten an eine angegebene IP-Adresse und Port. * @param {string} ipAddress - Die Ziel-IP-Adresse. * @param {number} port - Der Ziel-Port. * @param {string} hexData - Die HEX-Daten, die gesendet werden sollen. */ function sendHexData(ipAddress, port, hexData) { // Umwandlung der HEX-Daten in ein Buffer-Objekt const bufferData = Buffer.from(hexData, 'hex'); // Erstellung des TCP-Clients const client = new net.Socket(); // Verbindung mit dem Ziel-Server client.connect(port, ipAddress, function() { console.log('Verbunden mit: ${ipAddress}:${port}'); // Senden der HEX-Daten an den Server client.write(bufferData, function() { console.log('Daten gesendet: ${hexData}'); }); }); // Ereignisbehandlung bei Empfang von Daten vom Server client.on('data', function(data) { console.log('Daten empfangen: ' + data.toString()); }); // Ereignisbehandlung bei Verbindungsfehler client.on('error', function(err) { console.error('Verbindungsfehler: ' + err.message); }); // Ereignisbehandlung bei Verbindungsende client.on('close', function() { console.log('Verbindung geschlossen'); }); } // Beispielaufruf der Funktion mit dynamischen Parametern const ipAddress = '192.168.1.243'; // Ziel-IP-Adresse const port = 8899; // Zielport const hexData = '553361390201020A93A2AAAA'; //HEX-Daten // Funktion mit den obigen Parametern aufrufen sendHexData(ipAddress, port, hexData);Dieses Script bringt den Fehler:
TypeError: net.Socket is not a constructorHätte bitte jemand einen Tipp für mich, wo der Fehler liegt?
Vielen Dank.Keine Ahnung ob ich da recht habe, aber in der doku steht das so:
const net = require('node:net'); -
Keine Ahnung ob ich da recht habe, aber in der doku steht das so:
const net = require('node:net');@ticaki
Danke für den Tipp, aber die Fehlermeldungen bleiben leider gleich?Noch ein Nachtrag:
Die Dateien von 'net' sehe ich hier, aber soll das alles sein?pi@raspi4:/opt/iobroker/node_modules/@iobroker-javascript.0/net $ ls index.js LICENSE package.json README.md test.js pi@raspi4:/opt/iobroker/node_modules/@iobroker-javascript.0/net $ -
@ticaki
Danke für den Tipp, aber die Fehlermeldungen bleiben leider gleich?Noch ein Nachtrag:
Die Dateien von 'net' sehe ich hier, aber soll das alles sein?pi@raspi4:/opt/iobroker/node_modules/@iobroker-javascript.0/net $ ls index.js LICENSE package.json README.md test.js pi@raspi4:/opt/iobroker/node_modules/@iobroker-javascript.0/net $Wenn du net in der config einträgst
Dann entspricht das dem Befehl npm install netDadurch installierst du die folgende Bibliothek
https://www.npmjs.com/package/netNotiere den Import so wie gerade besprochen
Und entferne net wieder aus der confignode:net ist fest in Node eingebaut
-
Wenn du net in der config einträgst
Dann entspricht das dem Befehl npm install netDadurch installierst du die folgende Bibliothek
https://www.npmjs.com/package/netNotiere den Import so wie gerade besprochen
Und entferne net wieder aus der confignode:net ist fest in Node eingebaut
@oliverio
Vielen Dank für Deine Erklärung.Jetzt funktionieren beide Versionen des Scripts! Vielen Dank.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden