NEWS

Lösung für den Fehler EISGIT


  • Wer seinen adapter direkt im Verzeichnis /opt/iobroker/node_modules entwickeln möchte
    und dort ein git Repository initialisiert, könnte den Fehler EISGIT beim aktualisieren/installieren eines anderen Adapters erhalten.
    Dafür funktioniert folgende Lösung:

    1. Seinen eine Ebene direkt unter /opt/iobroker kopieren.
      Ein vorheriger Versuch den Adapter unter /home/pi zu kopieren scheiterte leider an der Auflösung von dependencys

    Die Option -r steht für rekursiv
    Die Option -p steht für alle Rechte und Infos über Eigentümer mitkopieren.

    cd /opt/iobroker/node_modules/
    sudo cp -rp <VerzeichnisnameAdapter>/ /opt/iobroker/
    
    1. Zur Sicherheit macht ihr dann noch eine Sicherheitskopie und löscht dann das Verzeichnis
    cd /opt/iobroker/node_modules/
    tar -cvpf /home/pi/<adaptername>.tar <VerzeichnisnameAdapter>/
    rm -r /opt/iobroker/node_modules/<VerzeichnisnameAdapter>
    
    1. Dann geht ihr in das Verzeichnis mit der Kopie und legt einen npm link an.
      Dadurch wird ein symlink ins globale Modulverzeichnis angelegt
    cd /opt/iobroker/<VerzeichnisnameAdapter>
    sudo npm link
    
    1. Zum Schluss dann in das Programmverzeichnis von iobroker
      Dort führt ihr wieder npm link plus den Paketnamen des Adapters aus (also das was in package.json drin steht.
      Das legt letztendlich einen symlink in das node_modules Verzeichnis an, so dass euer adapter an gewohnter Stelle verfügbar ist
    cd /opt/iobroker/
    npm link <AdapterPackagename>
    

    Danach habt ihr unter node_modules einen symlink zum anderen Verzeichnis.
    Ihr könnt dann ganz normal wieder im Adapterverzeichnis unter node_modulse arbeiten und npm
    stört sich nicht mehr an dem git-Repository.

  • Developer

    Praktisch... ein ähnliches Problem hatte ich gestern. Allerdings wollte ich meinen Adapter aus dem dev-Verzeichnis ins ioBroker-Verzeichnis linken. Dann beschwert sich ioBroker allerdings, dass die Startdatei nicht gefunden wird. Hattest du das Problem auch schon?


  • ja genau das ist das problem wenn man es ausserhalb des Pfades zum iobroker hin transportiert.
    Das Problem ist, das bei require nicht das symlink-verzeichnis beachtet, sondern das original-verzeichnis
    und da findet er andere Module nicht (bei mir wars der js-controller).
    vgl. auch
    https://github.com/nodejs/node/issues/3402
    Da gab es eine grössere Diskussion ob das überhaupt gefixt werden soll.

    Letztendlich wurde eine Startoption b ei node eingeführt. (--preserve-symlinks)
    Die habe ich aber noch nicht ausprobiert, da es ersteinmal einfacher war,
    das Verzeichnis direkt unterhalb von /opt/iobroker zu platzieren und dann den symlink zu machen

    VanCoding created this issue in nodejs/node

    closed Don't resolve symlinks when requiring #3402

  • Developer

    Danke, das sind schon mal zwei gute Hinweise. Werde ich später mal probieren.


  • super, ich wäre an den Ergebnissen interessiert.
    ich würde den eigentlichen Entwicklungsordner gern wieder woanders hinschieben.
    Interessant wäre es, wie ich dem iobroker sagen kann, dass er node mit der option starten muss.
    da kenn ich mich nicht aus

  • Developer

    @OliverW sagte in Lösung für den Fehler EISGIT:

    Interessant wäre es, wie ich dem iobroker sagen kann, dass er node mit der option starten muss.

    Das geht nicht soweit ich weiß, aber du kannst den Adapter ja manuell starten.

Suggested Topics

1.4k
Online

38.3k
Users

43.7k
Topics

611.2k
Posts