NEWS
Versionen Update Nodejs und NPM
-
Laut http://www.iobroker.net/docu/?page_id=5106&lang=de sollte man npm 4.x verwenden:
Hinweis: Diese Anleitung bezieht sich auf nodejs 6.x Die Nutzung von Nodejs 8.x wäre ebenfalls möglich (dazu in Schritt 4.1 die 6 gegen eine 8 austauschen), jedoch muss das dort mitgelieferte npm 5.x nach der Installation unbedingt auf v4.x downgegradet werden mit sudo npm install -g npm@4 npm 5.x enthält noch einen Bug, der bei ioBroker zu massiven Problemen führt.
Ich kann aber nicht sagen, ob das noch aktuell ist
lg, Sabine
-
Hallo Sabine,
Ich denke das sich die npm 5.x Problematik auf Versionen kleiner 5.7.1 bezogen hat. Diese und 5.8.0 sollte funktionieren. Und ja, das tut sie auch, nur im Admin wird halt eine alte Version angezeigt.
Lg
Günther
-
Es ist so wie Günther sagt.
Was die allgemeine Tauglichkeit von npm5 (>5.7.1) angeht, überlegen wir gerade wie da ein Upgrade idiotensicher gemacht werden kann.
Eine Neuinstallation sollte inzwischen alles abfangen, was nicht erwünscht ist.
Ich habe inzwischen mindestens 3 Installationen mit npm 5.7.1 oder 5.8.0 und nodejs 8.x laufen - ohne Probleme.
Gruß
Rainer
-
Danke Rainer für die Bestätigung. Jetzt brauche ich nur noch einen Tipp der die Installierte 5.8.0 auch dem Admin Panel bekanntmacht.
Lg
Günther
-
STRG-F5??
Gruß
Rainer
-
LOL, danke Rainer. grins
Leider ist das Problem tiefer.
Bei einem Upgrade eines Adapters wirft er bei der Versionsprüfung auch den Fehler das 5.6.0 installiert ist. Es ist also kein Browser Cache Problem.
Lg
Günther
-
Bei einem Upgrade eines Adapters wirft er bei der Versionsprüfung auch den Fehler das 5.6.0 installiert ist. Es ist also kein Browser Cache Problem. `
Ist mir die Tage an meinem Dev-Rechner ganz unabhängig von ioBroker auch aufgefallen.
npm run …
liefert die Meldung, dass ich doch bitte ein Update machen soll, obwohl ich es schon längst getan habe. Scheint etwas Windows-spezifisches zu sein. Hatte aber noch keine Zeit mich intensiv darum zu kümmern. -
bei der Versionsprüfung auch den Fehler das 5.6.0 installiert ist `
Das ist auch korrekt so!Die Version bei npm 5.x muss größer 5.7.1 sein, sonst gibt es massive Probleme.
Bitte die 5.8.0 mit
npm install -g npm@latest
installieren.
Gruß
Rainer
-
Hallo Rainer.
Wie im Eröffnungsthread geschrieben habe ich das eh gemacht. Und ein npm-v liefert auch 5.8.0
Nur im Admin halt nicht
Lg
Günther
-
Sorry, bei so vielen Threads behalte ich nicht immer den Überblick.
Das ist jetzt seltsam.
Was ist deine Controller-Version?
Was passiert wenn du über die Konsole mit
cd /opt/iobroker sudo iobroker update sudo iobroker upgrade AdapterName
durchführst?
Gruß
Rainer
-
@Homoran, ich habe die Vermutung, dass das was mit npm auf Windows zu tun hat, siehe viewtopic.php?p=141250#p141250
-
Hallo Rainer,
Sudo gibt es unter Windows nicht.
Aber wenn ich mit Administratorrechten ein Update auf der Konsole mache dann funktioniert es. Dort bekommt er die npm 5.8.0 mit. Nur Admin halt nicht.
Ich denke wir AlCazone auch, das es ein Windowsspezifikum ist.
Momentan installierte Versionen:
js-contoller: 1.3.0
Admin 3.3.5
Lg
Günther
-
Führ mal diese Befehle im ioBroker-Ordner aus:
npm ls npm npm ls npm -g
und poste das Ergebnis. Bei mir meldet nämlich sogar die Konsole, dass ein Update von 5.6.0 auf 5.8.0 verfügbar ist.
-
Mache ich am Abend, habe grade keinen Konsolenzugang zu meinem System.
-
Hallo,
Also npm ls npm bringt folgendes:
Iobroker.core@1.0.0 c:\iobroker
– (empty)
Und npm ls npm -g bringt folgendes:
C:\Users\meinname\Appdata\Roaming\npm
-- npm@5.8.0
Ein npm -v zeigt
5.8.0
Nur im Admin wird 5.6.0 angezeigt und bei Adapterinstallation auch abgefragt.
Lg
Günther
-
Hat noch jemand einen Tip für mich?
Lg
Günther
-
Ein bisschen hacky, aber so hab ich mal ein ähnliches Problem behoben:
1. Erstelle im ioBroker-Ordner eine Datei mit Namen "test.js" und folgendem Inhalt:
console.log(process.env.PATH.split(";"))
2. Bearbeite im gleichen Ordner die package.json mit einem Editor. Füge zwischen der öffnenden geschweiften Klammer und der nächsten Zeile folgendes ein:
"scripts": { "find-npm": "node test.js" },
3. Führe (immer noch im gleichen Ordner) folgendes aus:
npm run find-npm
Auf der Konsole sollte jetzt eine Liste von Pfaden erscheinen. In irgendeinem davon (der irgendwas mit npm/node zu tun hat) befindet sich deine Version 5.6.0. Am besten postest du den Pfad dann hier, damit im ioBroker eine Ausnahme hinzugefügt werden kann.
-
Hallo,
vielen Dank für die Anleitung.
Mein Ergebnis:
c:\ioBroker>npm run find-npm > iobroker.core@1.0.0 find-npm c:\ioBroker > node test.js [ 'C:\\Users\\schmitzerg\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\npm-lifecycle\\node-gyp-bin', 'c:\\ioBroker\\node_modules\\.bin', 'C:\\WINDOWS\\system32', 'C:\\WINDOWS', 'C:\\WINDOWS\\System32\\Wbem', 'C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\', 'C:\\Program Files (x86)\\Windows Kits\\8.1\\Windows Performance Toolkit\\', 'C:\\Program Files (x86)\\Common Files\\Acronis\\VirtualFile\\', 'C:\\Program Files (x86)\\Common Files\\Acronis\\VirtualFile64\\', 'C:\\Program Files (x86)\\Common Files\\Acronis\\FileProtector\\', 'C:\\Program Files (x86)\\Common Files\\Acronis\\FileProtector64\\', 'C:\\Program Files (x86)\\Common Files\\Acronis\\SnapAPI\\', 'C:\\Program Files\\nodejs\\', 'C:\\Users\\schmitzerg\\AppData\\Local\\Microsoft\\WindowsApps', 'C:\\Users\\schmitzerg\\AppData\\Roaming\\npm' ] c:\ioBroker>
Mir war nun nicht ganz klar wie ich die 5.6.0 finden kann. Ich habe deshalb in jedem Pfad ein npm -v ausgeführt. Leider war jedesmal ein 5.8.0 das Ergebnis. War das richtig oder kann ich die 5.6.0 anders finden?
lg
Günther
-
Da vermutlich: c:\ioBroker\node_modules\.bin bzw in einem der node_modules Ordner.
Befehle, die per NPM ausgeführt werden (darunter iobroker install) haben diesen Ordner in der PATH-Variable, um lokale Binaries ausführen zu können. Wenn du manuell npm ausführst, bekommst du die globale Version. Wahrscheinlich sind da noch Überreste der früheren Abhängigkeit von npm2, die beim Update nicht sauber entfernt wurde und dann ein Update auf 5.6.0 erfahren hat. Alles, was per npm ausgeführt wird, greift dann beim Aufruf von npm auf diese lokale Version zu.
npm uninstall npm npm prune
im ioBroker-Ordner könnte das eventuell beheben (ohne Gewähr). Ansonsten mal nach einem Ordner node_modules\npm im ioBroker-Ordner suchen und löschen. Und alles mit Namen "npm" aus dem .bin-Ordner entfernen.
-
Hallo,
nach der Deinstallation habe ich ein npm -v ausgeführt. Er findet noch immer die 5.8.0 Das ist gut, weil es die Theorie der 2 Versionen erhärtet.
Wie erwartet lässt sich IOBroker nun nicht mehr starten weil er die vorhandene Version nicht mehr findet.
Fehler beim starten vom Admin:
c:\ioBroker>node node_modules/iobroker.js-controller/iobroker.js start admin.0 module.js:549 throw err; ^ Error: Cannot find module 'c:\ioBroker\node_modules\iobroker.js-controller\iobroker.js' at Function.Module._resolveFilename (module.js:547:15) at Function.Module._load (module.js:474:25) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:188:16) at bootstrap_node.js:609:3 c:\ioBroker>
Wie kann ich IOBroker nun mitteilen das es da noch eine verwendbare Version gibt oder wie gehe ich weiter vor?
lg und vielen Dank für die Hilfe.
Günther