Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [gelöst] npm registry umstellen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] npm registry umstellen

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

      Habe es gefunden.

      Ich hatte die .npmrc nicht Verzichnis des Javascript-Adapters.

      Hier noch mal der Ablauf:

      cd /opt/iobroker/node_modules/iobroker.javascript
      sudo -u iobroker vi .npmrc
      

      und da in die Datei die neue Registry eintragen

      registry=http://<HOST>:8081/repository/npm_group/
      

      Dann in die package.json im Abschitt Dependencies das neue Modu aus dem Repo eintragen
      z.B.

      "iobroker-tools": "^1.0.0",
      

      und dann noch

      sudo -u iobroker npm i
      

      Aber leider kann ich das Modul noch nicht in den Scripten nutzen. Mal sehen ...

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @smartmeta last edited by

        @smartmeta sagte in npm registry umstellen:

        Dann in die package.json im Abschitt Dependencies das neue Modu aus dem Repo eintragen

        So geht das auch nicht. Du musst die dependency in der Adapterkonfiguration des JS-Adapters hinzufügen.

        smartmeta 1 Reply Last reply Reply Quote 0
        • smartmeta
          smartmeta @AlCalzone last edited by smartmeta

          @AlCalzone

          Vielen Dank für dein schnelles Feedback @AlCalzone.

          Ich wollte auf dem Weg schon mal sicherstellen, dass das Modul überhaupt geladen werden kann.

          Denn im nächsten Schritt habe ich es in

          9254f077-cb31-413a-a624-09379a14f7f8-grafik.png

          eingetragen, in der Hoffunung, dass es dann im Script nutzbar wird.
          Geht aber nicht. 😉


          Noch mal kurz zusammengefasst:
          Es geht erst mal nur um ein ganz einfaches Modul:

          export class A {
            public add(a: number, b: number): number {
              return a + b;
            }
          }
          

          Das TS-Script ist super simpel:

          import {A} from '/oho-iobroker-tools/A/A';
          const a = new A;
          const r = a.add(1,2);
          console.log("\nR = "+r);
          
          '* * * * *'
          
          

          Aber (wie du schon schreibst) funktioniert das nicht.

          ef725375-b7d1-41b2-9f18-44f33b942623-grafik.png


          Ich habe mir eben mal den Quellcode des Javascript.Adapers angesehen und festgestellt, dass du/ihr virtual-tsc verwendet.
          Jetzt ist mir auch klar warum das Modul nicht im node-modules geladen wird und nicht richtig erreichbar ist.

          Wie ist denn der saubere Weg (sprich über das iobroker Admin interface) mein Modul mit

          provideAmbientDeclarations()
          

          bekannt zu machen?
          Leider habe ich auch in den Sourcen vom virtual-tsc keine entsprechenden Tests gefunden die sowas vorsehen.
          Oder gibt es noch irgendwo eine Dokumentation über TypeScript im Javascript.Adapter die ich noch nicht gefunden habe?

          AlCalzone 1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer @smartmeta last edited by AlCalzone

            @smartmeta Sofern das Modul in package.json unter "types" die Definitionsdateien benennt, einfach in der Adapterkonfiguration hier einfügen:
            55d8db8e-9a61-4371-bad8-fcd302a407ee-grafik.png
            Typdefinitionen werden nicht mehr standardmäßig geladen, weil manche Typdefinitionen alleine (z.B. googleapis) mehrere 100 MB RAM benötigen.

            Außerdem ist dein Import-Pfad falsch - der führende Slash muss weg.

            smartmeta 1 Reply Last reply Reply Quote 0
            • smartmeta
              smartmeta @AlCalzone last edited by

              @AlCalzone

              vielen Dank für die Info. Schaue ich mir an...

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

                @AlCalzone

                Ich habe jetzt die Typdefinitionen in der package.json meines Moduls angegeben und

                e00e1349-daa4-4640-be5a-f67f048849fd-grafik.png

                aber damit wird doch jetzt noch nicht eine neue Version des Moduls aus dem npm-repository gezogen, oder?

                Mir ist noch nicht ganz klar, wo ich sehe, dass das Modul erfolgreich geladen wurde.
                Oder muss ich es doch in der package.json selber eintragen?

                AlCalzone 1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer @smartmeta last edited by

                  @smartmeta Updates macht der JS-Adapter nicht. Das musst du dann wohl manuell updaten:

                  cd /opt/iobroker/node_modules/iobroker.javascript
                  npm i oho-iobroker-tools@latest
                  

                  oder (@ver.si.on)

                  Dann Adapter neu starten.

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

                    Hi @AlCalzone,

                    okay

                    npm i oho-iobroker-tools@latest
                    

                    und Adapter neu starten habe ich gemacht. Leider keine Verbesserung.

                    Ich habe den Adapter jetzt mal mit Chrome remote gedebuggt.
                    Die Types werden auch laut log richtig geladen

                    2020-07-02 15:27:56.404  - debug: javascript.0 (9826) Loaded TypeScript definitions for node: ["@types/node/index.d.ts","@types/node/base.d.ts","@types/node/globals.global.d.ts","@types/node/assert.d.ts","@types/node/globals.d.ts","@types/node/async_hooks.d.ts","@types/node/buffer.d.ts","@types/node/child_process.d.ts","@types/node/cluster.d.ts","@types/node/console.d.ts","@types/node/constants.d.ts","@types/node/crypto.d.ts","@types/node/dgram.d.ts","@types/node/dns.d.ts","@types/node/domain.d.ts","@types/node/events.d.ts","@types/node/fs.d.ts","@types/node/http.d.ts","@types/node/http2.d.ts","@types/node/https.d.ts","@types/node/inspector.d.ts","@types/node/module.d.ts","@types/node/net.d.ts","@types/node/os.d.ts","@types/node/path.d.ts","@types/node/perf_hooks.d.ts","@types/node/process.d.ts","@types/node/punycode.d.ts","@types/node/querystring.d.ts","@types/node/readline.d.ts","@types/node/repl.d.ts","@types/node/stream.d.ts","@types/node/string_decoder.d.ts","@types/node/timers.d.ts","@types/node/tls.d.ts","@types/node/trace_events.d.ts","@types/node/tty.d.ts","@types/node/url.d.ts","@types/node/util.d.ts","@types/node/v8.d.ts","@types/node/vm.d.ts","@types/node/worker_threads.d.ts","@types/node/zlib.d.ts"]
                    2020-07-02 15:29:06.080  - debug: javascript.0 (9826) Loaded TypeScript definitions for request: []
                    2020-07-02 15:30:22.450  - debug: javascript.0 (9826) Loaded TypeScript definitions for oho-iobroker-tools: ["@types/oho-iobroker-tools/lib/index.d.ts"]
                    2020-07-02 15:31:05.172  - info: javascript.0 (9826) requesting all states
                    

                    Trotzdem kann ich das Modul nicht in den Scripten nutzen:
                    a81ade0f-02f9-4aa8-afc4-02df019fa2d5-grafik.png

                    Das Modul habe ich auch schon auf das nötigste reduziert um Fehler auszuschliessen (naja die test.js könnte ich auch noch löschen):
                    d56eda23-274a-4050-8d1f-96d641fbd9ff-grafik.png

                    Zusätzlich habe ich noch mal ein neues Node-Projekt erstellt, in dem genau der Code (wie im Script) verwendet wird:

                    import {A} from 'oho-iobroker-tools';
                    
                    const a = new A();
                    console.log (a.add(1,2));
                    
                    

                    Da klappt das wunderbar.


                    Wo muss ich den Breakpoint setzen,
                    damit ich mit

                    iobroker stop iobroker.javascript
                    >The adapter "javascript.0" was stopped.
                    
                    node --inspect-brk=0.0.0.0:9229 node_modules/iobroker.javascript/main.js --debug
                    

                    das Ausführen meine Sciptes MODULEX im Javascript-Adapter debuggen kann?

                    AlCalzone 1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer @smartmeta last edited by

                      @smartmeta das @types vor dem modulnamen erscheint mir in deinem Fall falsch. Dein Modul bringt ja die Typen mit. Müsste ich mir mal anschauen. Gibt es das auf npm?

                      smartmeta 1 Reply Last reply Reply Quote 0
                      • smartmeta
                        smartmeta @AlCalzone last edited by

                        @AlCalzone

                        Nein, das gibt es nicht auf NPM. Ich habe leider nicht genug Zeit um ein Modul auf NPM dauerhaft zu betreuen.

                        Habs dir hier mal angehangen:

                        oho-iobroker-tools-1.0.4.tgz

                        AlCalzone 1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer @smartmeta last edited by

                          @smartmeta Fix ist hier:
                          https://github.com/ioBroker/ioBroker.javascript/pull/610

                          Du kannst ihn testen, indem du den Adapter von der URL https://github.com/AlCalzone/ioBroker.javascript/tarball/types-resolve-fixes installierst.

                          AlCalzone created this issue in ioBroker/ioBroker.javascript

                          closed Fixes for type definition resolution #610

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

                            @AlCalzone sagte in npm registry umstellen:

                            https://github.com/AlCalzone/ioBroker.javascript/tarball/types-resolve-fixes

                            Hi @AlCalzone,
                            vielen Dank schon mal für den PR. Sehr cool, dass du mir hilfst.

                            Ich habe

                             "iobroker.javascript": "https://github.com/AlCalzone/ioBroker.javascript/tarball/types-resolve-fixes",
                            

                            in die package.json eingetragen und

                            sudo -u iobroker  npm i
                            

                            aufgerufen. Bekomme nun

                            ╭─────────────────────────────────────────────────────────╮
                            │                                                         │
                            │ Manual installation of ioBroker is no longer supported  │
                            │ on Linux, OSX and FreeBSD!                              │
                            │ Please refer to the documentation on how to install it! │
                            │ https://github.com/ioBroker/ioBroker/wiki/Installation  │
                            │                                                         │
                            ╰─────────────────────────────────────────────────────────╯
                            

                            Wie ist denn der vorgesehene Weg für das manuelle Nachinstallieren von Adaptern?

                            Denn in der Doku habe ich leider auch nichts dazu gefunden.
                            4e4a8878-44a7-4d11-94e1-b4af5b0d1b25-grafik.png

                            AlCalzone 1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer @smartmeta last edited by AlCalzone

                              @smartmeta package.json solltest du nur im absoluten Notfall bearbeiten, z.B. um eine kaputte Datei zu korrigieren.

                              Du suchst das hier: https://www.iobroker.net/#de/documentation/tutorial/adapter.md, was übrigens der 1. Link in dem von dir gefundenen Artikel war 🙈

                              Entweder du installierst den Adapter direkt per npm:

                              cd /opt/iobroker
                              npm i https://github.com/AlCalzone/ioBroker.javascript/tarball/types-resolve-fixes
                              

                              Benutzerwechsel ist hier nicht nötig, das passiert automatisch.

                              Oder (bevorzugt) über den Admin:
                              4fde7d6d-1c66-4a2c-9eac-4b8fbc84fc46-grafik.png

                              smartmeta 1 Reply Last reply Reply Quote 0
                              • smartmeta
                                smartmeta @AlCalzone last edited by smartmeta

                                @AlCalzone

                                der erste Link in dem von mir gefunden Dokument (Update eines Adapters) ist leider nicht verlinkt.
                                😉

                                Aber der Link https://www.iobroker.net/#de/documentation/tutorial/adapter.md ist gut. Danke!

                                Installation über
                                f5a8e982-20b8-4b78-8f3d-4c43f9c69feb-grafik.png
                                probiere ich später aus.

                                Danke

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

                                  @AlCalzone
                                  Okay, eingetragen und der Adapter ist neu geladen.

                                  Zur Sicherheit auch noch mal nachgesehen, dass deine Änderung in

                                  /lib/typescriptTools.js 
                                  

                                  auch drin ist. Alles okay.

                                  Dann zur Sicherheit noch mal

                                  iobroker stop
                                  iobroker start
                                  

                                  Leider funktioniert das TS-Modul noch immer nicht.
                                  7dac6abb-2fef-4fb6-8e59-336d3e4907c3-grafik.png

                                  Ich versuche das am Wochenende mal zu debuggen.

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

                                    Hi @AlCalzone,

                                    da mein Typescript ModulX bei mir noch immer nicht läuft, bin ich noch mal einen Schritt zurück gegangen.

                                    Ich versuche jetzt das Modul oho-iobroker-tools in einer reinen Javascript Umgebung.

                                    Zuerst ein Test in PHPStorm ganz ohne iobroker:
                                    7ded8cc1-e0fd-4e7b-80d2-a79d01738516-grafik.png

                                    Nun den gleichen Code

                                    var oho_iobroker_tools_1 = require("oho-iobroker-tools");
                                    var a = new oho_iobroker_tools_1.A();
                                    console.log(a.add(1, 20));
                                    

                                    im Javascript-Adapter :
                                    2e64eb45-1c04-4d4a-b3ab-2138de4b8155-grafik.png

                                    Wie auch in der Typescript-Variante wird die Klasse A nicht gefunden.
                                    751e3eea-dbd5-40d5-8cb2-26f931635e66-grafik.png

                                    Kannst du noch mal bitte schauen, ob das bei dir klappt. Vielleicht mache ich ja nur etwas ganz banales falsch.

                                    AlCalzone 1 Reply Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer @smartmeta last edited by

                                      @smartmeta Installier bitte nochmal die neueste Version aus dem Branch:

                                      8228dc7d-57dd-4a2d-8c49-c54be86d0906-grafik.png

                                      1 Reply Last reply Reply Quote 1
                                      • smartmeta
                                        smartmeta last edited by

                                        @AlCalzone

                                        vielen Dank, sehr cool.
                                        Mit deinem Branch funktioniert es jetzt sowohl im Javascript als auch im Typescript.

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

                                          @AlCalzone

                                          Nur aus Neugier: Wann kommen die Änderungen in den Master?

                                          AlCalzone 1 Reply Last reply Reply Quote 0
                                          • AlCalzone
                                            AlCalzone Developer @smartmeta last edited by

                                            @smartmeta Der PR ist jetzt germerged. Wann released wird, ist in Klärung.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            707
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            javaskript adapter nexus npm registry
                                            2
                                            22
                                            1144
                                            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