Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Hilfe bei Strukturierung von Klassen in TypeScript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Hilfe bei Strukturierung von Klassen in TypeScript

Scheduled Pinned Locked Moved Skripten / Logik
29 Posts 6 Posters 1.9k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlCalzoneA AlCalzone

    @xenon Von /opt/iobroker/node_modules/iobroker.javascript/lib ausgehend ist /opt/test/class.js unter dem relativen Pfad ../../../../test/class.js zu finden.

    Hier als Beispiel mal mit /home/iobroker/test.js:
    11e3f836-55c6-47bb-8089-9656b5d8dd46-grafik.png

    XenonX Offline
    XenonX Offline
    Xenon
    Forum Testing Developer
    wrote on last edited by Xenon
    #21

    @alcalzone sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

    @xenon Von /opt/iobroker/node_modules/iobroker.javascript/lib ausgehend ist /opt/test/class.js unter dem relativen Pfad ../../../../test/class.js zu finden.

    Danke dir, funktioniert ! 🙂

    Ist es sinnvoll das im /opt/iobroker anzulegen? Oder kann da was durch Updates des ioBrokers kaputt gehen?

    wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

    F 1 Reply Last reply
    0
    • XenonX Xenon

      @alcalzone sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

      @xenon Von /opt/iobroker/node_modules/iobroker.javascript/lib ausgehend ist /opt/test/class.js unter dem relativen Pfad ../../../../test/class.js zu finden.

      Danke dir, funktioniert ! 🙂

      Ist es sinnvoll das im /opt/iobroker anzulegen? Oder kann da was durch Updates des ioBrokers kaputt gehen?

      F Offline
      F Offline
      fastfoot
      wrote on last edited by
      #22

      @xenon sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

      Ist es sinnvoll das im /opt/iobroker anzulegen? Oder kann da was durch Updates des ioBrokers kaputt gehen?

      Also ich hatte meine Skripte immer in /opt/iobroker/scripts und bisher nie Probleme durch Updates etc. gehabt.

      Allerdings bin ich jetzt endlich dem Rat von @Thomas-Braun gefolgt und und habe seit Kurzem den mirror nach /home/iobroker/scripts verlegt. Im Docker kann man das einfach nach Aussen mappen so dass ich auch weiterhin Zugriff mit VS Code habe

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      XenonX 1 Reply Last reply
      1
      • F fastfoot

        @xenon sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

        Ist es sinnvoll das im /opt/iobroker anzulegen? Oder kann da was durch Updates des ioBrokers kaputt gehen?

        Also ich hatte meine Skripte immer in /opt/iobroker/scripts und bisher nie Probleme durch Updates etc. gehabt.

        Allerdings bin ich jetzt endlich dem Rat von @Thomas-Braun gefolgt und und habe seit Kurzem den mirror nach /home/iobroker/scripts verlegt. Im Docker kann man das einfach nach Aussen mappen so dass ich auch weiterhin Zugriff mit VS Code habe

        XenonX Offline
        XenonX Offline
        Xenon
        Forum Testing Developer
        wrote on last edited by Xenon
        #23

        @fastfoot du nutzt das vs code tool? Ich habe es versucht, bekomme es aber nicht hin. Auch wenns jetzt OT ist, aber muss ich in meinem LXC irgendwie eine Freigabe erteilen? So sieht es bei mir immer aus (bin in sowas nicht so der Profi 😄 )

        2021-11-15 18_20_30-Window.png

        wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

        F T 2 Replies Last reply
        0
        • XenonX Xenon

          @fastfoot du nutzt das vs code tool? Ich habe es versucht, bekomme es aber nicht hin. Auch wenns jetzt OT ist, aber muss ich in meinem LXC irgendwie eine Freigabe erteilen? So sieht es bei mir immer aus (bin in sowas nicht so der Profi 😄 )

          2021-11-15 18_20_30-Window.png

          F Offline
          F Offline
          fastfoot
          wrote on last edited by fastfoot
          #24

          @xenon sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

          @fastfoot du nutzt das vs code tool? Ich habe es versucht, bekomme es aber nicht hin. Auch wenns jetzt OT ist, aber muss ich in meinem LXC irgendwie eine Freigabe erteilen?

          ja, den vs code Editor unter Windows. Mit LXC kenne ich mich leider null aus, beim Docker ist dieses Mapping so eine Art mount mit dem man fast beliebig Ordner ausserhalb des Containers bringt. Als Standard empfiehlt sich zB /opt/iobroker so dass bei einem Wechsel/Update des Containers die iobroker installation völlig(!) unberührt bleibt. Falls LXC bzw LXD diese Möglichkeit nicht bietet würde ich das über einen mount probieren

          Edit: Ich greife mit vs code direkt auf ein Share zu und benutze kein Add-on

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          1 Reply Last reply
          1
          • XenonX Offline
            XenonX Offline
            Xenon
            Forum Testing Developer
            wrote on last edited by
            #25

            @fastfoot kommando zurück....... hatte https aktiv.... jetzt gehts 🙂

            wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

            1 Reply Last reply
            0
            • AlCalzoneA AlCalzone

              @uwe72 sagte in Hilfe bei Strukturierung von Klassen in TypeScript:

              Wie kann ich in einer dritten Datei die Klassen A und B einbinden? Ich weiß, dass ich A und B in global verschieben kann.

              Geht nicht direkt im Skript-Editor wenn du global vermeiden willst. Packe alles in ein einzelnes Skript oder lagere die gemeinsamen Dinge wie die Klassen in externe Module (Dateien) aus, die du auf der Platte in einem Ordner ablegst, der für den Nutzer iobroker lesbar ist. Die kannst du dann per require("/pfad/zur/datei.js") laden.

              ScroungerS Offline
              ScroungerS Offline
              Scrounger
              Developer
              wrote on last edited by
              #26

              @alcalzone

              Geht das auch inzwischen mit Typescript?

              Folgendes versuche ich gerade, Typescript liegt unter /opt/iobroker/test

              myModule.ts:

              export class testClass {
                  public static readonly testString = "alias.0";
              }
              

              Wenn ich das aufrufen will:

              const myModule = require('../../../test/myModule.ts');
              console.warn(myModule.testClass.testString);
              

              bekomme ich folgende Fehlermeldung:

              2023-01-24 09:04:15.881 - error: javascript.0 (2305) script.js.alias.Licht.Test: /opt/iobroker/test/myModule.ts:1
              2023-01-24 09:04:15.881 - error: javascript.0 (2305) at wrapSafe (node:internal/modules/cjs/loader:1094:15)
              2023-01-24 09:04:15.881 - error: javascript.0 (2305) at Module._compile (node:internal/modules/cjs/loader:1129:27)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Module.load (node:internal/modules/cjs/loader:1043:32)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Function.Module._load (node:internal/modules/cjs/loader:878:12)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Module.require (node:internal/modules/cjs/loader:1067:19)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at require (node:internal/modules/cjs/helpers:103:18)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:509:32)
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at script.js.alias.Licht.Test:3:16
              2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Script.runInContext (node:vm:141:12)
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) script.js.alias.Licht.Test: script.js.alias.Licht.Test:4
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) console.warn(myModule.testClass.testString);
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) ^
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) TypeError: Cannot read properties of undefined (reading 'testClass')
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) at script.js.alias.Licht.Test:4:23
              2023-01-24 09:04:15.883 - error: javascript.0 (2305) at Script.runInContext (node:vm:141:12)
              

              <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

              <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

              U 1 Reply Last reply
              0
              • ScroungerS Scrounger

                @alcalzone

                Geht das auch inzwischen mit Typescript?

                Folgendes versuche ich gerade, Typescript liegt unter /opt/iobroker/test

                myModule.ts:

                export class testClass {
                    public static readonly testString = "alias.0";
                }
                

                Wenn ich das aufrufen will:

                const myModule = require('../../../test/myModule.ts');
                console.warn(myModule.testClass.testString);
                

                bekomme ich folgende Fehlermeldung:

                2023-01-24 09:04:15.881 - error: javascript.0 (2305) script.js.alias.Licht.Test: /opt/iobroker/test/myModule.ts:1
                2023-01-24 09:04:15.881 - error: javascript.0 (2305) at wrapSafe (node:internal/modules/cjs/loader:1094:15)
                2023-01-24 09:04:15.881 - error: javascript.0 (2305) at Module._compile (node:internal/modules/cjs/loader:1129:27)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Module.load (node:internal/modules/cjs/loader:1043:32)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Function.Module._load (node:internal/modules/cjs/loader:878:12)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Module.require (node:internal/modules/cjs/loader:1067:19)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at require (node:internal/modules/cjs/helpers:103:18)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:509:32)
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at script.js.alias.Licht.Test:3:16
                2023-01-24 09:04:15.882 - error: javascript.0 (2305) at Script.runInContext (node:vm:141:12)
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) script.js.alias.Licht.Test: script.js.alias.Licht.Test:4
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) console.warn(myModule.testClass.testString);
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) ^
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) TypeError: Cannot read properties of undefined (reading 'testClass')
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) at script.js.alias.Licht.Test:4:23
                2023-01-24 09:04:15.883 - error: javascript.0 (2305) at Script.runInContext (node:vm:141:12)
                
                U Offline
                U Offline
                uwe72
                wrote on last edited by
                #27

                @scrounger Es läuft gerade ein ähnliches/gleiches Thema auf:
                https://forum.iobroker.net/topic/70069/einfügen-von-js-klassen-aus-eigenem-npm-modul/46?_=1699738698812

                Typescript-Klassen/Code lassen sich einbinden. Problem ist aktuell, dass wenn im externen Script was wie "sendTo()" vorkommt, dies dann in iobroker angemeckert wird, da nicht erkannt wird.

                1 Reply Last reply
                1
                • T Do not disturb
                  T Do not disturb
                  ticaki
                  wrote on last edited by ticaki
                  #28

                  3 Topics zum gleichen Thema? EDIT - oh 2 Jahre alt...

                  Lösung:
                  https://github.com/ticaki/script-library-example

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Reply Last reply
                  0
                  • XenonX Xenon

                    @fastfoot du nutzt das vs code tool? Ich habe es versucht, bekomme es aber nicht hin. Auch wenns jetzt OT ist, aber muss ich in meinem LXC irgendwie eine Freigabe erteilen? So sieht es bei mir immer aus (bin in sowas nicht so der Profi 😄 )

                    2021-11-15 18_20_30-Window.png

                    T Do not disturb
                    T Do not disturb
                    ticaki
                    wrote on last edited by ticaki
                    #29

                    ... ... ...

                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                    Spenden

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    277

                    Online

                    32.4k

                    Users

                    81.4k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe