Konfiguration einer Entwicklungsplattform für Gladys 4

Hallo,

Seit zwei Tagen steht mein Raspberry Pi 4 bereit, um einen kleinen Server für Gladys 4 zu erstellen. Um meine Änderungen vorzunehmen, greife ich direkt auf Git zurück, wie in der Dokumentation beschrieben.

Ich habe also das Repo in einen Ordner geklont, den Server und das Frontend über npm installiert, die Datenbank migriert, aber trotzdem erhalte ich nach dem Start des Tests diese Fehler:

Serverseite:

pi@raspberrypi:~/gladys/server $ npm test

> gladys-server@ pretest /home/pi/gladys/server
> cross-env SQLITE_FILE_PATH=/tmp/gladys-test.db npm run db-migrate:test && npm run eslint


> gladys-server@ db-migrate:test /home/pi/gladys/server
> cross-env NODE_ENV=test node_modules/.bin/sequelize db:migrate


Sequelize CLI [Node: 10.16.3, CLI: 5.4.0, ORM: 4.44.3]

Loaded configuration file "config/config.js".
Using environment "test".
== 20190211042644-create-calendar-event: migrating =======

ERROR: SQLITE_ERROR: index t_calendar_event_calendar_id already exists

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys-server@ db-migrate:test: `cross-env NODE_ENV=test node_modules/.bin/sequelize db:migrate`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-server@ db-migrate:test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2019-10-17T09_25_49_725Z-debug.log
npm ERR! Test failed.  See above for more details.

Frontend:

pi@raspberrypi:~/gladys/server $ cd ../front/
pi@raspberrypi:~/gladys/front $ npm test

> gladys-front@ test /home/pi/gladys/front
> jest --coverage

 FAIL  tests/header.test.js
  Initial Test of the Header
    ✕ Header renders Gladys Assistant title and 8 items in header (78ms)
    ✓ Should return null, login page doesnt need a header (2ms)
    ✕ [Backslash URL] Header renders Gladys Assistant title and 8 items in header (17ms)
    ✓ [Backslash URL] Should return null, login page doesnt need a header (1ms)

  ● Initial Test of the Header › Header renders Gladys Assistant title and 8 items in header

    expect(received).toBe(expected)

    Expected value to be (using ===):
      "Gladys Assistant"
    Received:
      ""

      at Object.<anonymous> (tests/header.test.js:25:305)
          at new Promise (<anonymous>)

  ● Initial Test of the Header › [Backslash URL] Header renders Gladys Assistant title and 8 items in header

    expect(received).toBe(expected)

    Expected value to be (using ===):
      "Gladys Assistant"
    Received:
      ""

      at Object.<anonymous> (tests/header.test.js:25:728)
          at new Promise (<anonymous>)

Test Suites: 1 failed, 1 total
Tests:       2 failed, 2 passed, 4 total
Snapshots:   0 total
Time:        1.956s
Ran all test suites.
-------------------|----------|----------|----------|----------|-------------------|
File               |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
-------------------|----------|----------|----------|----------|-------------------|
All files          |      100 |    66.67 |      100 |      100 |                   |
 components/header |      100 |    57.14 |      100 |      100 |                   |
  index.jsx        |      100 |    57.14 |      100 |      100 |35,41,45,73,96,114 |
 utils             |      100 |      100 |      100 |      100 |                   |
  url.js           |      100 |      100 |      100 |      100 |                   |
-------------------|----------|----------|----------|----------|-------------------|
npm ERR! Test failed.  See above for more details.
pi@raspberrypi:~/gladys/front $

Trotzdem habe ich sqlite3 installiert, node und npm laufen einwandfrei, und ich versuche, direkt nach dem Klonen des Repos Gladys zu installieren.

Auf der Serverseite scheint das Problem von doppelten Indizes in der Datenbank zu kommen.
Auf der Frontend-Seite habe ich einen Fehler bei der Definition des Headers.

Könnten Sie mir einige Hinweise zur Fehlersuche geben? Ich kann es kaum erwarten, mit der Entwicklung der benötigten Dienste zu beginnen :grin:

Vielen Dank im Voraus.

Kleines Update!

Es ist jetzt eine Woche her, und in der Zwischenzeit habe ich versucht, einen Server direkt auf dem WSL meines PCs zu installieren. Nach der Installation bin ich genau am selben Punkt angelangt. Könnte mir bitte jemand freundlicherweise helfen?

Danke :wink:

Oops, entschuldige, ich hatte deine Nachricht übersehen! :slight_smile:

Zuerst würde ich dir raten, das auf deinem Windows-Laptop laufen zu lassen und nicht auf deinem Pi, da man auf einem Pi nicht entwickeln kann!

Du musst die Datei /tmp/gladys-test.db löschen, offensichtlich existiert deine Datenbank bereits (dort liegt die Datenbank für die Tests). Ich weiß nicht, ob so ein Pfad auf Windows funktioniert? Vielleicht musst du ihn ändern.. (in der Datei server/package.json, an der Stelle, wo die Skripte definiert sind).

Ja, das funktioniert in WSL :wink:

Danke für euer Feedback! :grin:

Nach einem harten Tag habe ich es endlich geschafft, meinen Server zu installieren, und konnte daher meine ersten Beiträge überprüfen:

Die Entwicklung des Arduino-Dienstes beginnt!

Ich habe viele Ideen für die Konfigurationsseiten und die Interaktion mit den verbundenen Geräten. Ich habe eine Woche Urlaub, die werde ich nutzen, um so weit wie möglich voranzukommen. Ich werde euch auf dem Laufenden halten, sobald ich einen funktionierenden Anfang habe :wink:

Nochmals danke für eure Hilfe :slightly_smiling_face:

Genial @billona! Zögere nicht, wenn du Fragen hast :slight_smile:

Hallo zusammen,

Dieses Thema interessiert mich (eine Entwicklungsplattform für Gladys 4 aufbauen).

Ich habe das Gefühl, dass es möglich ist, dies mit Docker zu tun.
Ich bin kein DevOps und habe leider sehr wenig Zeit, die ich solchen Dingen widmen kann.
Sagt mir, ob es euch möglich erscheint, eine Entwicklungsplattform mit Docker aufzubauen, indem ihr einem Tutorial wie folgt folgt:

  • Docker mit der docker-compose.yml-Datei einrichten => Node-Image und ein passendes Volume-Mounting
  • Gladys v4-Git im Mount platzieren
  • Alles im Entwicklungsmodus bauen

Ich wünsche euch einen schönen Tag :slight_smile:

Für die Entwicklung mit Docker gibt es nichts Besonderes zu tun, man muss nur ein Volume bei der Erstellung hinzufügen (der Ordner, in dem Gladys installiert ist).

Aber es ist nicht besonders praktisch, weil das Image für die Produktion gedacht ist (kein Hot Reload).

WSL ist unter Windows einfach Spitze.

@renaiku, hier ist der relativ einfache Weg, den ich gegangen bin

Also, ich habe das schon vor langer Zeit gemacht, also habe ich die aktuelle Dokumentation nicht verfolgt. Es war schon seit seiner Veröffentlichung auf meinem PC, aber ich weiß, dass es einfach zu konfigurieren ist. Es installiert ein gutes altes Ubuntu (oder Debian oder ein anderes, je nach deinen Vorlieben).

Du installierst WSL, du kannst in dein Projekt zurückkehren (oder es neu installieren, wie du es bevorzugst).
HINWEIS: Zu beachten ist, dass der Ordner c:// in dieser Form /mnt/c/ unter WSL zu finden ist.

Dann folgst du der Standardinstallation unter Windows für Node-Module, die den Pfad c:/ aus der Gladys v4-Dokumentation verwenden, und startest die Server unter WSL

et theoretisch sollte es perfekt funktionieren ^^

Danke @VonOx für die Info :slight_smile:

@renaiku Persönlich würde ich dir empfehlen, nvm zu installieren, um die Node-Version zu wechseln, wann immer du möchtest, falls du das noch nicht gemacht hast ^^. Es ist zwar etwas umständlich auf Windows, aber danach bist du so entspannt ^^

Naja, warum willst du die Dokumentation umschreiben, WSL ist Linux, also sind die Abhängigkeiten dieselben. Oder habe ich dich falsch verstanden?

Bei deinem Pfad meinst du, dass node.exe unter WSL verwendet wurde? (Das wundert mich wirklich.)

Ah ja, da bin ich absolut derselben Meinung.

OK, ich verstehe, ich hatte nie Node Windows + WSL dafür, also habe ich dieses Problem nie festgestellt.