NEWS
Cannot find module 'csv-parse'
-
Hallo,
ich habe schon wie wild rumrecherchiert, aber leider keine Lösung für mein Problem gefunden und nun hoffe ich auf eure Hilfe.
Ich möchte eine csv-Datei einlesen und da bin ich auf "csv-parse" gestoßen, doch der Skript-Editor von iobroker sagt mir "Cannot finde module 'csv-parse'" in der Zeile:
var parse = require('csv-parse');
In der Javascript-Instanz habe ich "csv-parse" unter "zusätzliche NPM-Module" eingetragen. Vorher natürlich auch ein "npm install csv" gemacht.
Wenn ich den Befehl "find . -name csv" unter dem Verzeichnis /opt/iobroker ausführe, kommt folgende Ausgabe:
./node_modules/iobroker.javascript/node_modules/csv-stringify ./node_modules/iobroker.javascript/node_modules/csv ./node_modules/iobroker.javascript/node_modules/csv-generate ./node_modules/iobroker.javascript/node_modules/csv-parse ./node_modules/iobroker.javascript/node_modules/csv-parse/samples/fs_read.csv ./node_modules/csv-stringify ./node_modules/csv ./node_modules/csv-generate ./node_modules/csv-parse ./node_modules/csv-parse/samples/fs_read.csv
npm -v:
5.10.0
node -v:
v6.14.1
Habt ihr noch eine Idee, was ich machen muss, damit ich das csv-parse nutzen kann?
Besten Dank schonmal!
-
In der Javascript-Instanz habe ich "csv-parse" unter "zusätzliche NPM-Module" eingetragen. `
Das ist richtig. Das NPM-Modul wird anschließend automatisch installiert.
@tööö:Vorher natürlich auch ein "npm install csv" gemacht. `
Das ist unnötig.
@tööö:der Skript-Editor von iobroker sagt mir "Cannot finde module 'csv-parse'" `
Einige Editor-Meckereien sollte man ignorieren !Compiler- und Laufzeitfehler sollte man ernst nehmen.
-
Danke erstmal für die Informationen.
Fehler, welche ein Ausführen des Skriptes verhindern, sind folgende:
error javascript.0 script.js.Datei: /opt/iobroker/node_modules/csv-parse/lib/index.js:19 error javascript.0 at script.js.Datei:1:13 error javascript.0 script.js.Datei: script.js.Datei:4 error javascript.0 at script.js.Datei:4:1
Mein kompletter Code:
var parse = require('csv-parse'); var input = '#Welcome\n"1","2","3","4"\n"a","b","c","d"'; parse(input, {comment: '#'}, function(err, output){ // show result console.log(JSON.stringify(output)); });
Der erste Fehler hat mich vermuten lassen, dass es noch Fehler in der Installation gibt. Ansonsten meckert er ja die erste Zeile an, aber ich verstehe nicht so richtig, warum?
-
Bei mir funktioniert es:
@tööö:error javascript.0 script.js.Datei: /opt/iobroker/node_modules/csv-parse/lib/index.js:19 ```` `
Das Verzeichnis gibr es bei mir nicht, sondern nur die unter node_modules/iobroker.javascript/node_modules.
Lösche noch mal das NPM-Modul aus der JS-Konfiguration, dann speichern und danach wieder eintragen.
-
Leider immer noch das gleiche Problem.
Bei mir liegen die verschiedenen csv-Ordner (csv, csv-generate, csv-parse, csv-stringify) an zwei Stellen. Einmal unter "/opt/iobroker/node_modules/" und einmal unter "/opt/iobroker/node_modules/iobroker.javascript/node_modules".
Kann das das Problem sein? Kann ich die Ordner unter /opt/iobroker/node_modules/ einfach löschen?
-
Kann ich die Ordner unter /opt/iobroker/node_modules/ einfach löschen? `
Ich würde es deinstallieren: Im Ordner /opt/iobroker https://docs.npmjs.com/cli/uninstall.html -
Ok, nun habe ich nur noch an der richtige Stelle die entsprechenden csv-Ordner und ich bin einen Schritt weiter.
Nach Neustart vom Javascript-Adapter und Anstarten vom Skript kommt nun der Fehler:
error javascript.0 script.js.Datei: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../csv-parse'
Was sucht er denn da im lib-Ordner? Der sieht folgendermaßen bei mir aus:
-rw-rw-rw- 1 pi pi 2531 Oct 26 1985 consts.js -rw-rw-rw- 1 pi pi 3860 Oct 26 1985 convert.js -rw-rw-rw- 1 pi pi 6552 Oct 26 1985 eventObj.js -rw-rw-rw- 1 pi pi 32488 Oct 26 1985 javascript.d.ts -rw-rw-rw- 1 pi pi 13817 Oct 26 1985 mirror.js -rw-rw-rw- 1 pi pi 13042 Oct 26 1985 patternCompareFunctions.js -rw-rw-rw- 1 pi pi 109079 Oct 26 1985 sandbox.js -rw-rw-rw- 1 pi pi 11588 Oct 26 1985 scheduler.js -rw-rw-rw- 1 pi pi 675 Oct 26 1985 tools.js -rw-rw-rw- 1 pi pi 2279 Oct 26 1985 utils.js -rw-rw-rw- 1 pi pi 1789 Oct 26 1985 words.js
Mich wundern auch die "/../../" in der Fehlermeldung. Sucht er da noch nach anderen Ordnern, die er nicht findet?
-
Irgendwie muss NPM wohl mit der doppelten Installation des Moduls durcheinander gekommen sein. Versuche nochmal
@paul53:Lösche noch mal das NPM-Modul aus der JS-Konfiguration, dann speichern und danach wieder eintragen. `
-
Hatte ich auch schon versucht, leider ohne Erfolg.
Habe sogar ein
sudo npm --force cache clean
gemacht, aber auch das bringt nichts…
Wenn du keine andere Idee mehr hast, würde ich ein Backup einspielen (geht ja zum Glück recht fix und dann nochmal im JavaScript-Adapter "csv-parse" eintragen, ohne vorher etwas mit npm zu machen.
-
würde ich ein Backup einspielen (geht ja zum Glück recht fix und dann nochmal im JavaScript-Adapter "csv-parse" eintragen, ohne vorher etwas mit npm zu machen. `
Gute Idee. -
Hat leider alles nichts gebracht… :?
Was ich komisch finde, dass nach dem Restore trotzdem noch die csv-Ordner unter
/opt/iobroker/node_modules/iobroker.javascript/node_modules
vorhanden waren. Ich dachte, die installiert er erst, wenn ich das im Javascript-Adapter eintrage, oder?
Komisch nur, dass es bei dir funktioniert. Was kommt denn bei dir raus, wenn du ein "find . -name csv" in /opt/iobroker ausführst?
./node_modules/iobroker.javascript/node_modules/csv-stringify ./node_modules/iobroker.javascript/node_modules/csv ./node_modules/iobroker.javascript/node_modules/csv-generate ./node_modules/iobroker.javascript/node_modules/csv-parse ./node_modules/iobroker.javascript/node_modules/csv-parse/samples/fs_read.csv
Ansonsten hast du auch nur im Adapter das "csv-parse" eingetragen und das Skript gestartet, oder?
:?:
Was wäre noch ein Versuch? Den Javascript-Adapter löschen, damit erstmal der ganze Müll weg ist und dann den Adapter neu installieren? Mache ich damit andere Sachen kaputt?
-
Was ich auch noch ziemlich merkwürdig finde.
Meine Skriptestruktur sieht folgendermaßen aus:
Unter Objekte wird es erstmal nicht angezeigt:
Erst wenn ich dort in den Expertenmodus umschalte, wird es angezeigt…?
-
-
Noch jemand eine Idee, wie ich das csv-parse Modul eingebunden bekomme?
Habe sogar schon den Javascript-Adapter neu installiert, sodass nun alles sauber ist. csv-parse ist nur noch unter folgenden Verzeichnissen zu finden:
/opt/iobroker/node_modules/iobroker.javascript/node_modules/csv-parse /opt/iobroker/node_modules/iobroker.javascript/node_modules/csv-parse/samples/fs_read.csv
Dennoch kommt folgender Fehler:
Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../csv-parse'
Ich weiß nicht, was er da mit dem lib-Ordner machen will?
Ich hoffe, einer weiß noch eine Lösung oder Versuche, die man noch machen könnte.