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.
    • 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
                                          • smartmeta
                                            smartmeta last edited by

                                            @AlCalzone okay, danke.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            646
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

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