Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. import Syntax

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    import Syntax

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

      Laut JS Doku sollte der Aufruf

      import {Testfunktion} from './Funktion';
      

      die Funktion "Testfunktion" aus dem Modul "Funktion" importieren. So funktioniert das aber nicht. (Fehler)

      Ist meine Syntax falsch oder ist diese Funktion einfach nicht implementiert?

      T arteck paul53 4 Replies Last reply Reply Quote 0
      • T
        ticaki Developer @WolfgangFB last edited by

        @wolfgangfb

        Musste mal suchen ich hab mit jemanden anderem vor ein paar Monaten das ausprobiert und hinbekommen. Aber wieder vergessen wie es geht.

        1 Reply Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active @WolfgangFB last edited by

          @wolfgangfb hast du die auch installiert ..

          1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @WolfgangFB last edited by

            @wolfgangfb

            https://forum.iobroker.net/post/1078724

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @WolfgangFB last edited by paul53

              @wolfgangfb sagte: ist diese Funktion einfach nicht implementiert?

              Im normalen Javascript (nicht TS) kann man eigene Node-Module mit require() importieren. Beispiel:

              const clock = require('../../../iobroker-data/modules/test.js');
              
              log(clock(new Date()));
              
              W 1 Reply Last reply Reply Quote 0
              • W
                WolfgangFB @paul53 last edited by

                @paul53

                Irgendwie klappt das nicht.
                Ich habe im "Common" Verzeichnis ein Skript "Testfunktion.js" erstellt.

                function Testfunktion(){
                  console.log("Hallo");
                }
                

                wenn ich im gleichnen Verzeichnis ein weiteres Skript "Test.js" erstelle wird schon die erte Zeile

                cons commonScript = require('Testfunktion.js')
                

                als Fehler moniert (cannot find module Testfunktion.js)
                auch wenn ich den Pfad mit "./Testffunktion.js" oder ".\Testfunktion" oder was auch immer angebe.

                paul53 1 Reply Last reply Reply Quote 0
                • W
                  WolfgangFB last edited by

                  @ticaki sagte in import Syntax:

                  @wolfgangfb

                  Musste mal suchen ich hab mit jemanden anderem vor ein paar Monaten das ausprobiert und hinbekommen. Aber wieder vergessen wie es geht.

                  Ich habe mal nach Dir gegoogelt, aber nichts passendes gefunden.

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @WolfgangFB last edited by paul53

                    @wolfgangfb sagte: im "Common" Verzeichnis ein Skript "Testfunktion.js" erstellt.

                    Was ist das "Common" Verzeichnis? Wenn Du mehrfach verwendbare Funktionen benötigst, erstelle sie unter der Gruppe "global" (Expertenmodus!). Sie können dann aus jedem anderen (nicht globalen) Skript mit ihrem Namen aufgerufen werden.

                    Ein Node-Modul sieht etwas anders aus, als eine einfache Javascript-Funktion. Meine Datei "test.js" im Verzeichnis "/opt/iobroker/iobroker-data/modules":

                    'use strict';
                    module.exports = function (date) {
                       let hour = date.getHours();
                       let min = date.getMinutes();
                       if(min < 10) min = '0' + min;
                       return hour + ':' + min;
                    };
                    
                    1 Reply Last reply Reply Quote 0
                    • W
                      WolfgangFB last edited by

                      @paul53
                      Ich abe mir jetzt in iobroker-data das Verzeichnis "modules" erzeugt und dort die Datei "test.js" angelegt.

                      Darin dann

                      'use strict';
                      module.exports = function(x){
                      return (x + 1);
                      }
                      

                      dann ein Skript und dort

                      const myfunc= require('../../../iobroker-data/modules/test.js');
                      console.log(myfunc(2));
                      

                      '../../../iobroker-data/modules/test.js

                      wird zwar immer noch rot unterkringelt, aber es kommt zumindest keine Fehlermeldung, dass das modul nicht gefunfen wird. Dafür kommt aber die Fehlermeldung

                      myfunc is not a function.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @WolfgangFB last edited by

                        @wolfgangfb sagte: myfunc is not a function

                        Fehlermeldung des Editors (rote Kringel) oder zur Laufzeit?
                        Wird nicht 3 im Log ausgegeben?

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          WolfgangFB @paul53 last edited by

                          @paul53 sagte in import Syntax:

                          @wolfgangfb sagte: myfunc is not a function

                          Fehlermeldung des Editors (rote Kringel) oder zur Laufzeit?

                          Editor

                          Wird nicht 3 im Log ausgegeben?

                          Nein, nur die Fehlermeldung "TypeError: myfunc is not a function"

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @WolfgangFB last edited by

                            @wolfgangfb sagte: nur die Fehlermeldung "TypeError: myfunc is not a function"

                            Bei mir wird die 3 ausgegeben.

                            JS_Module.JPG

                            Identischer Inhalt in "test2.js".

                            W 1 Reply Last reply Reply Quote 0
                            • W
                              WolfgangFB @paul53 last edited by

                              @paul53
                              Ich habe jetzt noch folgendes geändert:

                              var myfunc = require('../../../iobroker-data/modules/test.js');
                              console.log("Test: " + typeof(myfunc));
                              console.log(myfunc(4));  
                              

                              Ergebnis:

                              17:28:21.028	info	javascript.0 (304489) Stop script script.js.Test.Neu
                              17:28:21.154	info	javascript.0 (304489) Start javascript script.js.Test.Neu
                              17:28:21.161	info	javascript.0 (304489) script.js.Test.Neu: Test: object
                              17:28:21.162	info	javascript.0 (304489) script.js.Test.Neu: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                              17:28:21.163	error	javascript.0 (304489) script.js.Test.Neu: TypeError: myfunc is not a function
                              17:28:21.163	error	javascript.0 (304489) at script.js.Test.Neu:3:13
                              17:28:21.163	error	javascript.0 (304489) at script.js.Test.Neu:4:3
                              

                              Also myfunc ist ein Object und keine Funktion.

                              T paul53 2 Replies Last reply Reply Quote 0
                              • T
                                ticaki Developer @WolfgangFB last edited by

                                @wolfgangfb

                                Der Link ist doch oben im Topic...

                                1 Reply Last reply Reply Quote 0
                                • W
                                  WolfgangFB last edited by

                                  @ticaki sagte in import Syntax:

                                  @wolfgangfb

                                  Der Link ist doch oben im Topic...

                                  Ich sehe in dem Topic aber ehrlich gesagt keine Lösung für das Einbinden einer externen Funktion.

                                  T 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @WolfgangFB last edited by

                                    @wolfgangfb sagte: myfunc ist ein Object und keine Funktion.

                                    Bei mir:

                                    JS_Module.JPG

                                    W 2 Replies Last reply Reply Quote 0
                                    • W
                                      WolfgangFB @paul53 last edited by

                                      @paul53

                                      Jetzt bin ich völlig ratlos. Wenn ich die Datei in "test2.js" umbenenne (und das ganze natürlich auch in required... anpasse) funktioniert das ganze tadellos. Benenne ich wieder zurück in test.js wird es wieder als Object erkannt und funktioniert nicht. Was könnte der Grund für so ein seltsames Verhalten sein?

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @WolfgangFB last edited by

                                        @wolfgangfb sagte: Was könnte der Grund für so ein seltsames Verhalten sein?

                                        Keine Ahnung.

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          ticaki Developer @WolfgangFB last edited by

                                          @wolfgangfb sagte in import Syntax:

                                          @ticaki sagte in import Syntax:

                                          @wolfgangfb

                                          Der Link ist doch oben im Topic...

                                          Ich sehe in dem Topic aber ehrlich gesagt keine Lösung für das Einbinden einer externen Funktion.

                                          Also siehst du nicht das dort eine externe class über eine require funktion eingebetet wird.

                                          1 Reply Last reply Reply Quote 0
                                          • W
                                            WolfgangFB @paul53 last edited by

                                            @paul53
                                            Ich habe jetzt folgendes festgestelle: Erstelle ich eine neues npm Modul funktioniert das ganze, änder ich in dem Modul etwas ab und speichere werden die Änderungen nicht übernommen. Auch wenn ich z.B. ein einmal funktionierendes Modul umbennen kommt keine Fehlermeldung, dass das Modul nicht existiert.
                                            Gibt es einen Weg js dazu zu bringen, das Modul neu einzulesen? (irgendwie cache leeren oder ähnliches)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            785
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            24
                                            745
                                            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