NEWS
(gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz
- 
					
					
					
					
 @ice987 entferne es mal, starte den Adapter neu, dann füge es wieder hinzu. 
- 
					
					
					
					
 @alcalzone 
 ich habe alles hier
  
 entfernt, Instanz neu gestartet, der error bleibt.node-fetchwieder hinzugefügt, Instanz heu gestartet, Fehler bleibt.
- 
					
					
					
					
 @ice987 sagte: error wie folgt: Wie ist es in das Skript eingebunden? 
- 
					
					
					
					
 aktuell (zu Testzwecken) nur so: const fetch = require('node-fetch');welches bereits den Fehler ergibt: 
- 
					
					
					
					
 @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. 
- 
					
					
					
					
 Dann ist da im Adapter irgendwas faul... 
 importwird unter der Haube inrequireumgeschrieben, sollte sich also gleich verhalten.@ice987 Probier mal als Workaround: cd /opt/iobroker/node_modules/iobroker.javascript npm install --production
- 
					
					
					
					
 @paul53 
 so hätte ich die Fehlermeldung auch interpretiert. Da hab' ich's manuell probiert, was funktionierte, jedoch nicht der "korrekten Installation" entspricht...cd /opt/iobroker/node_modules/iobroker.javascript npm install --productionhabe 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. 
- 
					
					
					
					
 @alcalzone sagte: Probier mal als Workaround: cd /opt/iobroker/node_modules/iobroker.javascript npm install --productionDorthin hat es der Javascript-Adapter installiert. Es wird dort aber nicht von require gefunden. 
- 
					
					
					
					
 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-fetchund anschließend /opt/iobroker/node_modules/node-fetchversucht werden. 
 In diesem Fall würde das bedeuten, dassnode-fetchsich weder im Unterordner, noch in der übergeordneten Struktur befindet.@ice987 
 Was kommt hier raus?cd /opt/iobroker find -iname node-fetch
- 
					
					
					
					
 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
- 
					
					
					
					
 @paul53 Ahhhh, klick! d.h. in /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetchist 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.
- 
					
					
					
					
 @ice987 Probier mal folgendes: - Adapter stoppen, node-fetchaus der Adapter-Konfig entfernen.
 cd /opt/iobroker/node_modules/iobroker.javascript npm uninstall node-fetch- In der Adapterkonfiguration node-fetch@2eintragen und Adapter starten.
 
- Adapter stoppen, 
- 
					
					
					
					
 @alcalzone sagte in (gelöst) NPM-Module in der Javascript instanz: @ice987 Probier mal folgendes: - Adapter stoppen, node-fetchaus der Adapter-Konfig entfernen.
 cd /opt/iobroker/node_modules/iobroker.javascript npm uninstall node-fetch- In der Adapterkonfiguration node-fetch@2eintragen und Adapter starten.
 das funktioniert! cd /opt/iobroker/node_modules/iobroker.javascript npm install --productionmuss/soll/kann dies wieder Rückgängig gemacht werden? 
- Adapter stoppen, 
- 
					
					
					
					
 @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. 
- 
					
					
					
					
 @alcalzone sagte in (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz: @ice987 Probier mal folgendes: - Adapter stoppen, node-fetchaus der Adapter-Konfig entfernen.
 cd /opt/iobroker/node_modules/iobroker.javascript npm uninstall node-fetch- In der Adapterkonfiguration node-fetch@2eintragen 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. 
- Adapter stoppen, 
- 
					
					
					
					
 gelöscht 
- 
					
					
					
					
 @ice987 sagte: funktioniert, bis ioBroker neu gestartet wird. Anschliessend kommt wieder der genannte Fehler Bei mir kommt der Fehler nach Neustart nicht.  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",
- 
					
					
					
					
 @paul53 
 sind bei mir identisch:{ "_from": "node-fetch@2", "_id": "node-fetch@2.6.2",
- 
					
					
					
					
 iobroker-Neuling hier. Ich versuche, node-fetchin TypeScript zu verwenden. Ich habe es zu dem JavaScript-Adapter als Modul (node-fetch@2) ergänzt, bekomme beim Verwenden vonimport 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 einfachaxiosverwendet. Das funktioniert.
- 
					
					
					
					
 @dukkha sagte in (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz: require() of ES Module ... from ... not supported Die Version, die installiert ist, hat das ES Modules Format, welches von ioBroker nicht geladen werden kann. Installiere eine ältere Version, dann müsste es gehen. 
 
		
	 
		
	 
			
		 
			
		