Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. (beantwortet) Frage zu npm - neues Modul laden (extraneous)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (beantwortet) Frage zu npm - neues Modul laden (extraneous)

    This topic has been deleted. Only users with topic management privileges can see it.
    • ruhr70
      ruhr70 last edited by

      @paul53:

      Auf der Seite zum https://www.npmjs.com/package/circuit kann ich keine Methode .Client finden. `

      Das sieht nach einem ganz anderem Modul aus, als dass, was ich nutzen möchte.

      Kann es sein, dass nicht das Module aus der circuit.tgz verwendet wird, sondern das, auf deren Beschreibung Du verlinkt hast?

      Und daher die Methode nicht gefunden wird?

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

            // Load the circuit module
            var circuit = require('circuit');
        
        var message = circuit.prop(function(name) {
          return 'Hello, ' + name;
        });
        
        // set the value to `Alice` 
        message('Alice');
        
        // get the transformed value 
        var a = message(); // a == "Hello, Alice" 
        
        // set the value to `Bob` 
        message('Bob');
        
        // get the transformed value 
        var b = message(); // b == "Hello, Bob" 
        
        log("a = " + a + " ## b = " + b);
        

        Das Script funktioniert.

        javascript-1	2016-03-12 19:53:37	info	script.js.Test_Skript1: a = Hello, Alice ## b = Hello, Bob
        javascript-1	2016-03-12 19:53:37	info	Start javascript script.js.Test_Skript1
        

        Mit var circuit = require('circuit'); wird also das npm Modul verwendet, auf das paul53 verlinkt hat 😞

        Was muss ich denn machen, damit das Modul verwendet wird, das ich aus derDatei circuit.tgz installiert habe?

        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          Nach ein bisschen Recherche…

          • unter ../iobroker/node_modules/circuit
          liegt das Paket, das ich benötige
          
          • unter ../iobroker/node_modules/iobroker.javascript/node_modules/circuit

            liegt das Paket, dessen Beschreibung paul53 verlinkt hat

              var circuit = require('circuit');
          ````verwendet das Modul unter ../iobroker/node_modules/iobroker.javascript/node_modules/circuit
          
          Wie installiere ich das Modul korrekt, so dass man das Ergebnis auch einfach oder in einem Adapter verwenden kann?
          
          Habe ich bei der Installation was falsch gemacht, s.o.?
          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @ruhr70:

            Nach ein bisschen Recherche…

            • unter ../iobroker/node_modules/circuit
            liegt das Paket, das ich benötige
            
            • unter ../iobroker/node_modules/iobroker.javascript/node_modules/circuit

              liegt das Paket, dessen Beschreibung paul53 verlinkt hat

                var circuit = require('circuit');
            ````verwendet das Modul unter ../iobroker/node_modules/iobroker.javascript/node_modules/circuit
            
            Wie installiere ich das Modul korrekt, so dass man das Ergebnis auch einfach oder in einem Adapter verwenden kann?
            
            Habe ich bei der Installation was falsch gemacht, s.o.? `  
            

            Du kannst "/iobroker/node_modules/iobroker.javascript/node_modules/circuit" löschen und dann sollte schon dein Modul verwendet werden

            1 Reply Last reply Reply Quote 0
            • ruhr70
              ruhr70 last edited by

              @Bluefox:

              [

              Du kannst "/iobroker/node_modules/iobroker.javascript/node_modules/circuit" löschen und dann sollte schon dein Modul verwendet werden `

              Danke! Funktioniert leider trotzdem nicht. :roll:

              Ich habe beide Pfade gelöscht. Und im iobroker Verzeichnis neu installiert:

              Michaels-iMac:iobroker michael$ npm install ./circuit.tgz
              \
              > utf-8-validate@1.2.1 install /Users/michael/iobroker/node_modules/circuit/node_modules/ws/node_modules/utf-8-validate
              > node-gyp rebuild
              
                CXX(target) Release/obj.target/validation/src/validation.o
                SOLINK_MODULE(target) Release/validation.node
              
              > bufferutil@1.2.1 install /Users/michael/iobroker/node_modules/circuit/node_modules/ws/node_modules/bufferutil
              > node-gyp rebuild
              
                CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
                SOLINK_MODULE(target) Release/bufferutil.node
              circuit@1.1.5600-1 node_modules/circuit
              └── ws@0.8.1 (utf-8-validate@1.2.1, bufferutil@1.2.1)
              

              Die Abfrage npm list circuit zeigt nun einen Fehler, den ich vorher nicht hatte (hat nichts mit dem Löschen zu tun. War nach meinen diversen Versuchen irgendwann da):

              Michaels-iMac:iobroker michael$ npm list circuit
              /Users/michael/iobroker
              └── (empty)
              
              npm ERR! code 1
              

              "/iobroker/node_modules/iobroker.javascript/node_modules/circuit" ist gelöscht

              unter "/iobroker/node_modules/circuit" liegt das benötigte Modul.

              Das Testscript:

              ! ````
              // Load the circuit module
              var circuit = require('circuit');
              ! var message = circuit.prop(function(name) {
              return 'Hello, ' + name;
              });

              // set the value to Alice
              message('Alice');

              // get the transformed value
              var a = message(); // a == "Hello, Alice"

              // set the value to Bob
              message('Bob');

              // get the transformed value
              var b = message(); // b == "Hello, Bob"

              ! log("a = " + a + " ## b = " + b);
              ! // Load the circuit module
              var Circuit = require('circuit');
              ! // Instantiate a client and logon
              var client = new Circuit.Client();

               client.logon({email: 'bob@unify.com', password: 'P@ssw0rd'}).then(function (user) {
                  log('Logged on user: ' + user);
              }, function (err) {
                  log("circuit error","error");
              });
              

              ! ````

              Funktioniert immer noch für das Modul, welches ich unter iobroker.javascript gelöscht hatte und erzeugt für das von mir benötigte Modul immer noch den Fehler.

              javascript-1	2016-03-12 22:00:36	error	at script.js.Test_Skript1:408:18
              javascript-1	2016-03-12 22:00:36	error	script.js.Test_Skript1: TypeError: Circuit.Client is not a function
              javascript-1	2016-03-12 22:00:36	info	script.js.Test_Skript1: a = Hello, Alice ## b = Hello, Bob
              javascript-1	2016-03-12 22:00:36	info	Start javascript script.js.Test_Skript1
              

              Der erste Fehler npm ERR! code 1 war vorher nicht da.

              Vielleicht habe ich zu viel getestet und probiert und was "kaputt gemacht"? :shock:

              [EDIT]

              Funktioniert jetzt.

              Ich musste nach dem Löschen das Modul vom Verzeichnis "/iobroker/node_modules/circuit" nach "/iobroker/node_modules/iobroker.javascript/node_modules/circuit kopieren.

              1 Reply Last reply Reply Quote 0
              • Thisoft
                Thisoft last edited by

                Also nach meinem Verständnis liegt das Problem doch nicht darin dass das Modul nicht korrekt installiert wäre sondern dass Du den Client falsch aufrufst.

                Der Fehler ist:
                ` > ````

                javascript-1 2016-03-12 22:00:36 error script.js.Test_Skript1: TypeError: Circuit.Client is not a function
                ```` `

                Das bedeutet doch dass in der folgenden Zeile was falsch ist:

                ` > ````

                var client = new Circuit.Client();
                

                ```` `

                Nur mal eine Vermutung von mir - lass mal die Klammern hinter "Client" weg. Wie gesagt ist ne Vermutung und so toll fit bin ich noch nicht in der Syntax von JS. Könnte auch sein, dass es in dem Modul was Du installiert hast wirklich keine Funktion "Client" gibt…

                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  @Thisoft:

                  Also nach meinem Verständnis liegt das Problem doch nicht darin dass das Modul nicht korrekt installiert wäre sondern dass Du den Client falsch aufrufst.

                  Der Fehler ist:
                  ` > ````

                  javascript-1 2016-03-12 22:00:36 error script.js.Test_Skript1: TypeError: Circuit.Client is not a function
                  ```` `

                  Das bedeutet doch dass in der folgenden Zeile was falsch ist:

                  ` > ````

                  var client = new Circuit.Client();
                  

                  ```` `

                  Nur mal eine Vermutung von mir - lass mal die Klammern hinter "Client" weg. Wie gesagt ist ne Vermutung und so toll fit bin ich noch nicht in der Syntax von JS. Könnte auch sein, dass es in dem Modul was Du installiert hast wirklich keine Funktion "Client" gibt… `

                  Hallo Thisoft,

                  danke für Dein Feedback. Der Aufruf im Script ist richtig. Ist auch eine 1:1 Kopie aus dem Beispiel für das Modul.

                  Es funktioniert jetzt. Es war wirklich die Installation des Moduls. Da das Modul über die gepackte Datei installiert wird und es aber auch ein Modul auf npm mit identischen Namen gibt, hatte ich im Javascript-Verzeichnis das falsche Modul.

                  Ich musste, wie bluefox geschrieben hatte, das Modul im Javascript-Verzeichnis löschen und dann aber noch eine Kopie aus dem "nodes_module" Hauptverzeichnis wieder rein kopieren.

                  Habe viel gelernt. Danke für jedes Feedback.

                  Gruß

                  Michael

                  1 Reply Last reply Reply Quote 0
                  • Thisoft
                    Thisoft last edited by

                    OK, schön dass es jetzt bei dir klappt. Hab ich ja gewissermaßen auch wieder was gelernt. Ich bin halt verwöhnt von einer IDE die einem fehlende Verweise ('require') schon im Editor "um die Ohren haut".

                    Gruß Thilo

                    1 Reply Last reply Reply Quote 0
                    • ruhr70
                      ruhr70 last edited by

                      @Thisoft:

                      …Ich bin halt verwöhnt von einer IDE die einem fehlende Verweise ('require') schon im Editor "um die Ohren haut". `

                      Hi Thilo,

                      das 'require' war auch korrekt vorhanden. Es lag wirklich an den unterschiedlichen "circuit" node Modulen.

                      Die Erkenntnisse aus den Tests zusammengefasst, ohne Anspruch auf Richtigkeit:

                      <size size="150">"/iobroker/node_modules/"</size>

                      • Hier liegen die Pakte, die von iobroker und node.js verwendet werden.?

                      <size size="150">"/iobroker/node_modules/iobroker.adaptername/node_modules/"</size>

                      • Hier liegen die Pakete, die zusätzlich von einem Adapter verwendet werden. Die Pakete sind für alle Instanzen eines Adapter identisch.

                      • Automatische Installation durch den Adapter während dessen Installation. Welche Module individuell für den Adapter installiert werden steht in der package.json des Adapters unter "dependencies".

                      • Manuelle Installation durch den Anwender: für den Javascript Adapter, siehe nächster iobroker.admin, Reiter Instanzen: "

                      • Manuelle Installation durch den Anwender: im Verzeichnis "/iobroker/node_modules/iobroker.javascript/" npm ausführen, z.B. > npm install bleacon (wenn ein Modul direkt von npm installiert werden oder z.B. > npm install ./circuit.tgz, wenn ein Modul, welches in dem Verzeichnis lokal liegt, installiert werden soll.

                      <size size="150">iobroker.admin, Reiter Instanzen:</size>

                      • Hier können im Javascript Adapter runter "Zusätzliche NPM-Module" zusätzliche npm Module installiert werden, die auf npm bekannt sind.

                      • Die Module werden nach dem Speichern der Einstellungen unter "/iobroker/node_modules/iobroker.javascript/node_modules/" installiert (Log kontrollieren). Wenn sie einmal installiert sind, könnte der Eintrag in den Einstellungen des Adapter s auch raus.

                      • Einige Module werden mit dem Javascript-Adapter schon vorinstalliert, wie z.B. wake_on_lan, request, suncalc.

                        Auszug aus der package.json des JavaScript-Adapters (die Quellen der Adapter liegen auf npm):

                          "dependencies": {
                            "node-schedule": "1.0.0",
                            "request": "^2.69.0",
                            "suncalc": "^1.7.0",
                            "wake_on_lan": "0.0.4",
                            "coffee-compiler": "^0.3.2",
                            "coffee-script": ">=1.10.0"
                          },
                        

                        Auszug aus der package.json des Sonor-Adapters (hier liegt die Quelle des Moduls nicht auf npm):

                        ,
                          "dependencies": {
                            "sonos-web-controller": "https://github.com/jishi/node-sonos-web-controller/tarball/master/"
                          },
                        
                      • Die Module fs, crypto, util, path, os, net, events, dns sollen laut Javascript Adapter Dokumentation auch vorinstalliert sein, tauchen aber unter

                        "/iobroker/node_modules/iobroker.javascript/node_modules/" nicht auf. Sie sind auch unter "/iobroker/node_modules/" nicht zu finden. offene Frage: wo werden diese Module abgelegt?

                      <size size="150">Dokumentation von npm Modulen</size>

                      • auf https://www.npmjs.com findet man die Dokumentation zu den dort vorhandenen npm Modulen

                      • Beispiel für das Modul request: https://www.npmjs.com/package/request

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @ruhr70:

                        • Die Module fs, crypto, util, path, os, net, events, dns sollen laut Javascript Adapter Dokumentation auch vorinstalliert sein, tauchen aber unter

                          "/iobroker/node_modules/iobroker.javascript/node_modules/" nicht auf. Sie sind auch unter "/iobroker/node_modules/" nicht zu finden. offene Frage: wo werden diese Module abgelegt? `
                          Das sind eingebaute Module. Die sind im node.js Core drin und müssen nicht installiert sein:

                        assert
                        buffer
                        child_process
                        cluster
                        crypto
                        dgram
                        dns
                        events
                        fs
                        http
                        https
                        net
                        os
                        path
                        punycode
                        querystring
                        readline
                        repl
                        string_decoder
                        tls
                        tty
                        url
                        util
                        vm
                        zlib
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        711
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        4
                        12
                        2919
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo