Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz

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

      @alcalzone
      ok, hab alles gelistete entfernt (ausser iobroker). Nun habe ich aber erneut das Problem mit dem Error:

      Module sind wie folgt eingetragen:
      c91a6e3b-8f85-42ea-9b8c-2bcc00fca5a2-image.png

      error wie folgt:

      14:52:47.875	error	javascript.2 (185) script.js.08_Wetterstation.082_Meteoblue: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
      
      root@iobroker-v510:/opt/iobroker# npm ls node-fetch
      iobroker.inst@2.0.3 /opt/iobroker
      └─┬ iobroker.javascript@5.2.8
        └── node-fetch@3.0.0
      
      AlCalzone paul53 2 Replies Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @ice987 last edited by

        @ice987 entferne es mal, starte den Adapter neu, dann füge es wieder hinzu.

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

          @alcalzone
          ich habe alles hier
          31b0f607-d79f-4326-b9dd-dbb2c8fc8cd9-image.png
          entfernt, Instanz neu gestartet, der error bleibt. node-fetch wieder hinzugefügt, Instanz heu gestartet, Fehler bleibt.

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

            @ice987 sagte: error wie folgt:

            Wie ist es in das Skript eingebunden?

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

              @paul53

              aktuell (zu Testzwecken) nur so:

              const fetch = require('node-fetch');
              

              welches bereits den Fehler ergibt:

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

                @ice987
                require erwartet es im Verzeichnis /opt/iobroker/node_modules, wo es offenbar nicht (mehr) installiert ist.

                Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
                

                import reagiert anders.

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

                  Dann ist da im Adapter irgendwas faul...
                  import wird unter der Haube in require umgeschrieben, sollte sich also gleich verhalten.

                  @ice987 Probier mal als Workaround:

                  cd /opt/iobroker/node_modules/iobroker.javascript
                  npm install --production
                  
                  paul53 1 Reply Last reply Reply Quote 0
                  • ice987
                    ice987 last edited by ice987

                    @paul53
                    so hätte ich die Fehlermeldung auch interpretiert. Da hab' ich's manuell probiert, was funktionierte, jedoch nicht der "korrekten Installation" entspricht...

                    @AlCalzone

                    cd /opt/iobroker/node_modules/iobroker.javascript
                    npm install --production
                    

                    habe ich ausgeführt: fehler bleibt:

                    Script nur eine Zeile:

                    const fetch = require('node-fetch');
                    

                    fehler:

                    15:20:40.276	error	javascript.2 (1358) script.js.08_Wetterstation.Skript_1: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
                    

                    wenns was zur Sache tut: ioBroker läuft auf einem QNAP im Container, unter dem offiziellen Dockerimage von Buanet.

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

                      @alcalzone sagte: Probier mal als Workaround:

                      cd /opt/iobroker/node_modules/iobroker.javascript
                      npm install --production
                      

                      Dorthin hat es der Javascript-Adapter installiert. Es wird dort aber nicht von require gefunden.

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

                        Laut https://github.com/ioBroker/ioBroker.javascript/blob/1a05db402d3c5ad83623825734141a22c34e04b9/lib/sandbox.js#L410-L423 sollte zuerst

                        /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch
                        

                        und anschließend

                        /opt/iobroker/node_modules/node-fetch
                        

                        versucht werden.
                        In diesem Fall würde das bedeuten, dass node-fetch sich weder im Unterordner, noch in der übergeordneten Struktur befindet.

                        @ice987
                        Was kommt hier raus?

                        cd /opt/iobroker
                        find -iname node-fetch
                        
                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @AlCalzone last edited by

                          @alcalzone

                          const fetch = require('iobroker.javascript/node_modules/node-fetch');
                          

                          ergibt

                          Error [ERR_REQUIRE_ESM] [ERR_REQUIRE_ESM]: Must use import to load ES Module: /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/src/index.js
                          
                          AlCalzone 1 Reply Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer @paul53 last edited by

                            @paul53 Ahhhh, klick!

                            d.h. in /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch ist das Modul zu finden, aber in einer Version, die der Adapter nicht laden kann.
                            Dann probiert er /opt/iobroker/node_modules/node-fetch, wo es nicht ist.

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

                              @ice987 Probier mal folgendes:

                              1. Adapter stoppen, node-fetch aus der Adapter-Konfig entfernen.
                              cd /opt/iobroker/node_modules/iobroker.javascript
                              npm uninstall node-fetch
                              
                              1. In der Adapterkonfiguration node-fetch@2 eintragen und Adapter starten.
                              ice987 2 Replies Last reply Reply Quote 1
                              • ice987
                                ice987 @AlCalzone last edited by ice987

                                @alcalzone sagte in (gelöst) NPM-Module in der Javascript instanz:

                                @ice987 Probier mal folgendes:

                                1. Adapter stoppen, node-fetch aus der Adapter-Konfig entfernen.
                                cd /opt/iobroker/node_modules/iobroker.javascript
                                npm uninstall node-fetch
                                
                                1. In der Adapterkonfiguration node-fetch@2 eintragen und Adapter starten.

                                das funktioniert!

                                cd /opt/iobroker/node_modules/iobroker.javascript
                                npm install --production
                                

                                muss/soll/kann dies wieder Rückgängig gemacht werden?

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

                                  @ice987 sagte: muss/soll/kann dies wieder Rückgängig gemacht werden?

                                  Nein, denn node-fetch wurde gerade durch

                                  In der Adapterkonfiguration node-fetch@2 eintragen und Adapter starten.

                                  dort neu installiert.

                                  const fetch = require('node-fetch');
                                  

                                  erzeugt keinen Fehler mehr.

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

                                    @alcalzone sagte in (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz:

                                    @ice987 Probier mal folgendes:

                                    1. Adapter stoppen, node-fetch aus der Adapter-Konfig entfernen.
                                    cd /opt/iobroker/node_modules/iobroker.javascript
                                    npm uninstall node-fetch
                                    
                                    1. In der Adapterkonfiguration node-fetch@2 eintragen und Adapter starten.

                                    Diese Prozedur funktioniert, bis ioBroker neu gestartet wird. Anschliessend kommt wieder der genannte Fehler

                                    script.js.08_Wetterstation.082_Meteoblue: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
                                    

                                    wird die Prozedur wieder durchgeführt, funktioniert es wieder ohne Fehler. Ggf. ist da was nicht i.O.

                                    AlCalzone paul53 2 Replies Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer @ice987 last edited by AlCalzone

                                      gelöscht

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

                                        @ice987 sagte: funktioniert, bis ioBroker neu gestartet wird. Anschliessend kommt wieder der genannte Fehler

                                        Bei mir kommt der Fehler nach Neustart nicht.

                                        Bild_2021-09-16_124030.png

                                        Die ersten 3 Zeilen der Datei /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/package.json:

                                        {
                                          "_from": "node-fetch@2",
                                          "_id": "node-fetch@2.6.2",
                                        
                                        ice987 1 Reply Last reply Reply Quote 0
                                        • ice987
                                          ice987 @paul53 last edited by

                                          @paul53
                                          sind bei mir identisch:

                                          {
                                            "_from": "node-fetch@2",
                                            "_id": "node-fetch@2.6.2",
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            dukkha last edited by dukkha

                                            iobroker-Neuling hier. Ich versuche, node-fetch in TypeScript zu verwenden. Ich habe es zu dem JavaScript-Adapter als Modul (node-fetch@2) ergänzt, bekomme beim Verwenden von import fetch from 'node-fetch'; aber dann folgenden Fehler:

                                            Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/src/index.js from /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js not supported

                                            Jemand eine Idee?

                                            Edit: Tatsächlich passiert das auch mit einer reinen JavaScript-Datei und const fetch = require('node-fetch');.
                                            Edit 2: Ich habe nun einfach axios verwendet. Das funktioniert.

                                            AlCalzone U 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            465
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            39
                                            3265
                                            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