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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    import Syntax

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                        • paul53
                          paul53 @WolfgangFB last edited by

                          @wolfgangfb sagte: Modul neu einzulesen?

                          Genügt ein Skriptstart nicht? "require" wird bei Skriptstart ausgeführt.

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

                            @paul53

                            Probiere es aus. Ich habe ein neues Modul erstellt.

                            excports.xplus1 = function(x){return (x + 1)}
                            

                            in der aufrufenden Funktion dann

                            const myfunc= require(...);
                            console.log(myfunc.xplus1(10));
                            

                            Ergebnis: 11

                            änder ich jetzt in der exportieren Funktion etwas (z.B. anstelle von x + 1 => x + 2 kann ich speichern so viel ih will, es kommt immer 11 raus. Selbs wenn ich das Modul mit dem Export komplett lösche kann ich es immer noch aufrufen (mit dem Ergebnis 11), das muss irgendwo im Cache liegen.

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

                              @wolfgangfb sagte: das muss irgendwo im Cache liegen.

                              Neustart der Javascript-Instanz?

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

                                @paul53

                                Das funktioniert taatsächlich, ist aber ziemlich blöd wenn man etwas entwickeln möchte. Bei jedem Fehler oder jeder Änderung die JS Instanz neu starten. Das muss auch irgendwie aders gehen.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                786
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

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