# Lassen Sie uns über Gladys V4 sprechen

**URL:** <https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578>\
**Category:** Développement\
**Created:** [20. Oktober 2018 um 21:24 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578 "2018-10-20T21:24:26Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 11:29 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/106 "2019-02-05T11:29:44Z")

</div>

Das fängt ja schon mal schlecht an ^^

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/2fb41bdfee52459963c875a2eb537c2be706f9b0.png)

Aber ich finde nicht, dass das schlampig ist, persönlich 🤔

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [5. Februar 2019 um 11:31 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/107 "2019-02-05T11:31:13Z")

</div>

Ok, ich fix das 😛

Ich werde dieses Paket verwenden, um das plattformübergreifend zu machen:

> **[cross-env](https://www.npmjs.com/package/cross-env)**
>
> Run scripts that set and use environment variables across platforms. Latest version: 10.1.0, last published: a year ago. Start using cross-env in your project by running \`npm i cross-env\`. There are 6880 other projects in the npm registry using...

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 11:32 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/108 "2019-02-05T11:32:21Z")

</div>

Ich habe das Ding einfach repariert, indem ich ‹&nbsp;SET&nbsp;› vor den NODE\_ENV gesetzt habe ^^  
Aber ich weiß nicht, ob es danach auf den anderen Plattformen funktionieren wird

Edit: Ein Start-Skript hinzufügen und auch npm i im Root-Paket wäre praktisch 😛

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [5. Februar 2019 um 11:34 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/109 "2019-02-05T11:34:20Z")

</div>

Nein, genau dafür gibt es ein Modul, das verschiedene Plattformen verwaltet 🙂

Ich habe gepusht, das sollte es bei dir beheben!

Übrigens, wenn es sich um devDependencies handelt, ist es nicht so schlimm, kleine Abhängigkeiten für so etwas zu installieren, man muss nur sicherstellen, dass diese Abhängigkeiten nicht im Produktionsbuild enthalten sind, sonst wird es schnell schwerfällig.

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 11:37 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/110 "2019-02-05T11:37:57Z")

</div>

Ja, das ist auf einmal viel besser ^^

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [5. Februar 2019 um 11:38 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/111 "2019-02-05T11:38:18Z")

</div>

> [@MathieuA](#):
>
> Ich finde das nicht unordentlich, persönlich 🤔

Ich weiß nicht, ich überlege, ob ich den Ordner «&nbsp;controllers&nbsp;» und «&nbsp;middlewares&nbsp;» in einen Ordner «&nbsp;api&nbsp;» legen soll. Aber zu viele Unterordner sind nicht immer die beste Idee…

> [@MathieuA](#):
>
> Edit: Ein Start-Skript hinzufügen und auch npm i im Root-Paket wäre praktisch 😛

Ja! Später würde ich das Root-Paket konfigurieren, wenn das Frontend da ist.

Alles muss für den Entwickler und den Benutzer transparent sein.

In der Entwicklung würde es den Hot-Reload-Server für Frontend und Backend starten

In der Produktion würde es einfach den Server starten, der die gebaute SPA ausliefert

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 11:51 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/112 "2019-02-05T11:51:23Z")

</div>

> [@pierre-gilles](#):
>
> Nach dem Verstecken in Unterordner ist das nicht immer die beste Idee…

Ja, tatsächlich ist das nicht unbedingt die beste Idee, so verliert man schnell den Überblick in den Bergen von Unterordnern ^^

Kleine Frage, hast du den ESLint-Test erfolgreich bestanden, nehme ich an?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [5. Februar 2019 um 11:57 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/114 "2019-02-05T11:57:46Z")

</div>

> [@MathieuA](#):
>
> Kleine Frage, hast du den ESLint-Test erfolgreich bestanden, nehme ich an?

Ja, warum funktioniert es bei dir nicht?

Es funktioniert doch lokal und auf Travis!

> [@piznel](#):
>
> Ich habe euren Austausch gelesen, sogar zweimal, aber ich habe immer noch nichts verstanden! Wie man sieht, ist das ein echter Beruf 😉

Übrigens, deine Meinung zum Repo könnte interessant sein! Findest du es sauber?

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 12:01 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/115 "2019-02-05T12:01:19Z")

</div>

Nein, ich bekomme einen Fehler 416 ins Gesicht!  
Aber ich vermute, dass VSCode die falsche ESLint-Konfiguration nicht verwendet… obwohl es mir scheint, dass es automatisch die Projektkonfiguration verwendet 🤔

Ich muss etwas übersehen haben… das ist das erste Mal, dass es mir das macht..

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [5. Februar 2019 um 12:14 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/116 "2019-02-05T12:14:24Z")

</div>

> [@MathieuA](#):
>
> Aber ich vermute, dass VSCode die falsche ESLint-Konfiguration verwendet… obwohl ich denke, dass es automatisch die Projektkonfiguration verwendet 🤔

Ah, das ist sicherlich das Problem! Untersuchung deiner VSCode-Konfiguration..

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [5. Februar 2019 um 12:21 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/117 "2019-02-05T12:21:35Z")

</div>

Ach, ist schon gut, ich habe es gefunden, danke Windows 😛

Es geht um Zeilenumbrüche, Windows verwendet standardmäßig CRLF, während Mac und Linux nur LF verwenden. Da alle Dateien auf dem Mac erstellt wurden, interpretiert mein VsCode die ESLint-Regeln falsch und zeigt mir überall Zeilenumbruchfehler an 😤

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 05:29 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/118 "2019-02-06T05:29:37Z")

</div>

Hallo zusammen!

Ich habe gerade eine erste Version des Datenbankmodells fertiggestellt 🙂

Sagt mir, was ihr davon haltet, vielleicht gibt es Dinge, die geändert werden müssen oder Dinge, die vergessen wurden. Sagt mir Bescheid!

 ![gladys-v4-data-model-06-02-2019](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f94997cd8b3de01aa6eabc40f11b4c5d66d829aa.png)

> [@MathieuA](#):
>
> Das ist eine Geschichte mit Zeilenumbrüchen, Windows verwendet standardmäßig den Typ CRLF, während MAC und Linux nur LF verwenden, daher interpretiert mein VsCode die ESLint-Regeln falsch, weil alle Dateien auf MAC erstellt wurden, und zeigt mir überall Zeilenumbruchfehler an 😤

Ich habe dir auf deine PR geantwortet, wir wollen nicht, dass die Regel deaktiviert wird! 😛 Sonst wird es ein Chaos. Du musst deinen IDE so konfigurieren, dass er LF ohne Probleme verarbeitet (das ist in den Einstellungen von VSCode) 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 05:39 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/119 "2019-02-06T05:39:38Z")

</div>

Weitere Neuerungen: Ich habe die Struktur der `package.json`-Dateien der internen Dienste in Gladys 4 definiert.

Hier ein Beispiel:

```auto
{
  "name": "gladys-example",
  "main": "index.js",
  "os": [
    "darwin",
    "linux",
    "win32"
  ],
  "cpu": [
    "x64",
    "arm",
    "arm64"
  ],
  "scripts": {},
  "dependencies": {
    "axios": "^0.18.0"
  }
}

```

Der Modul muss nun zwei zusätzliche Attribute angeben: «&nbsp;os&nbsp;» und «&nbsp;cpu&nbsp;», um die Plattformen anzugeben, auf denen der Dienst läuft.

Wenn man einen Build von Gladys für eine Plattform erstellt, wird NPM die notwendigen Überprüfungen durchführen, ob der Dienst installiert werden kann oder nicht.

- Falls ja, wird der Dienst installiert
- Falls nein, wird der Dienst nicht installiert und mit einem speziellen Fehlercode (Typ «&nbsp;platform\_not\_compatible&nbsp;») deaktiviert, und daher nicht beim Start von Gladys geladen

Diese Regeln:

- Eine gültige package.json haben
- Ein «&nbsp;os&nbsp;»- und «&nbsp;cpu&nbsp;»-Attribut in der package.json haben

Werden durch eine Reihe von Tests überprüft, damit sichergestellt ist, dass alle Module diesen Anforderungen entsprechen.

[https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/test/services/checks.test.js](https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/test/services/checks.test.js)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 08:01 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/120 "2019-02-06T08:01:33Z")

</div>

@MathieuA Also, ich habe die Architektur und die Art, wie die Gladys-Bibliothek und die Abhängigkeiten instanziiert werden, ein wenig geändert.

Die Controller sehen jetzt so aus:

[https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/api/controllers/user.controller.js](https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/api/controllers/user.controller.js)

Ich finde das klarer, und alle Controller einer Entität in einer einzigen Datei zu haben, sehe ich kein Problem, die Controller sind so dünn… Und ich bevorzuge Abhängigkeitsinjektion statt require hier.

Dann, eine weitere Änderung, die Gladys-Bibliothek muss ebenfalls instanziiert werden, damit wir die «&nbsp;states&nbsp;» einfacher verwalten können.

Ich erkläre: Früher hatte ich die Angewohnheit, «&nbsp;shared.js&nbsp;»-Dateien zu erstellen, um Zustände zu speichern, die zwischen mehreren Dateien geteilt werden. Das hat funktioniert, aber es ist nicht ideal, im Grunde habe ich require() als Singleton-Anbieter verwendet ^^

Vorschlag: Genau wie die Module ist jeder Service eine Funktion, die Funktionen zurückgibt (im Grunde ist es wie eine Klasse, die instanziiert werden muss)

Also, um Gladys zu starten, machen wir:

[https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/index.js](https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/index.js)

Ich denke, wir werden einen klareren App-Lifecycle und ein saubereres Zustandmanagement haben.

PS: Ich habe «&nbsp;controllers&nbsp;» und «&nbsp;middleware&nbsp;» und «&nbsp;routes.js&nbsp;» in einen Ordner «&nbsp;api&nbsp;» verschoben, ich finde das klarer

Wenn jemand Feedback hat, bin ich offen dafür 😉

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [6. Februar 2019 um 08:07 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/121 "2019-02-06T08:07:53Z")

</div>

> [@pierre-gilles](#):
>
> Ich habe dir auf dein PR geantwortet, das wollen wir nicht, die Regel zu deaktivieren! 😛 Sonst wird es ein Chaos.

Ahah, ich wusste, dass du mir das antworten würdest! ^^  
Aber es wird ein Chaos, wenn du diese Regel nicht deaktivierst 😛

Denn ich habe nachgeschaut und man kann VSCode nicht so konfigurieren, dass es automatisch den Zeilenumbruch-Typ berücksichtigt. Die einzige Konfiguration, die man vornehmen kann, ist, den Zeilenumbruch beim Erstellen einer neuen Datei festzulegen. Aber bei bestehenden Dateien ist das einzige Mittel, sie manuell zu ändern, aber das führt zu falschen Änderungen für Git, die ich dann commiten müsste… aber das ist ein bisschen blöd.

Umso mehr, weil ich nicht der Einzige bin, der auf Windows entwickelt, also wird es sicher Konflikte mit anderen geben. Und wenn sie oder ich dir PRs für neue Dateien mit Windows-Zeilenumbrüchen machen, wird das zu Fehlern bei den automatischen Tests führen oder sogar, wenn es bei dir ist!

Und ehrlich gesagt, mit den wenigen Dateien, die es im Projekt gibt, habe ich schon über 400 Fehler beim Testen bei mir, also wenn die Entwicklung weiter voranschreitet, werde ich die Idee aufgeben, den Test zu starten 😛

Ich habe nachgeschaut, ob man etwas mit der ESLint-Konfiguration machen könnte, aber anscheinend ist nichts vorgesehen, es ist entweder das eine oder das andere 😕

Also dachte ich, das Beste wäre, diese Regel zu deaktivieren, ist ja nicht so, als würde ich die Kommentarprüfung deaktivieren 😅

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 08:20 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/122 "2019-02-06T08:20:49Z")

</div>

Heyy keine Panik, wir finden eine Lösung ^^

Ist es normal, dass man im Projekt konsistent ist, oder? 🙂 Alle ernsthaften Open-Source-Projekte machen das, wenn wir nach einem Tag mit einem strengen ESlint schon aufgeben, kommen wir nicht weit.

(Ich sage das, weil diese Regel eindeutig die einfachste Regel ist, danach gibt es noch strengere Regeln zum Codierstil)

Ich habe im Internet gesucht und es ist möglich, eine .editorconfig-Datei im Git-Repository zu erstellen, die deinem Vscode anzeigt, dass dieses Projekt „LF“ als Zeilenendstil gewählt hat. Es ist ein plattformübergreifendes Dateiformat, also hilft es auch Entwicklern unter Atom oder anderen IDEs.

Beispiel in einem Open-Source-Projekt:

> <https://github.com/diegohaz/arc/blob/master/.editorconfig>

Kannst du das testen? Wenn es das ist, würde ich diese Datei im Git ablegen

Wenn es nicht das ist, habe ich Dutzende von Themen zu diesem Thema gefunden, es ist ein grundlegendes Problem, wir finden eine Lösung 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 08:27 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/123 "2019-02-06T08:27:04Z")

</div>

Ein anderes Problem könnte sein, dass dein Git so konfiguriert ist, dass es alle LF durch CRLF ersetzt, wenn du pullst.

[https://stackoverflow.com/a/53298967/6719814](https://stackoverflow.com/a/53298967/6719814)

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [6. Februar 2019 um 08:34 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/124 "2019-02-06T08:34:49Z")

</div>

> [@pierre-gilles](#):
>
> Ist es normal, über das gesamte Projekt hinweg konsistent zu sein? 🙂 Alle ernsthaften Open-Source-Projekte machen das, wenn wir schon nach einem Tag mit einem strengen ESlint aufgeben, kommen wir nicht weit.

Ich bin total einverstanden ^^  
Aber nachdem ich gestern stundenlang gesucht habe, hat es mich genervt 😛

> [@pierre-gilles](#):
>
> Ich habe im Internet gesucht und es ist möglich, eine .editorconfig-Datei im Git-Repository zu erstellen, die deinem Vscode anzeigt, dass dieses Projekt „LF“ als Zeilenendstil gewählt hat. Es ist ein editorübergreifendes Dateiformat, also wird es auch Entwicklern unter Atom oder anderen IDEs helfen.

Den hatte ich nicht! Und es funktioniert! Ich war auch auf eine Geschichte mit einer .gitattributes-Datei gestoßen, aber das hat nicht funktioniert. Es ist ein bisschen mystisch, weil VSCode mir unten den Windows-Zeilentyp anzeigt, aber ich habe keine Fehler mehr 😆

> [@pierre-gilles](#):
>
> Anderes Problem, vielleicht ist dein Git so konfiguriert, dass es alle LF beim Pull durch CRLF ersetzt.

Ah, das habe ich auch versucht, aber es hat nichts gebracht 😕

Aber in diesem Fall funktioniert die editorconfig-Datei perfekt!

---

<div class="post-metadata">

**Author:** ![MathieuA](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mathieua/32/22211_2.png) [@MathieuA](https://community.gladysassistant.com/u/MathieuA)\
**Post date:** [6. Februar 2019 um 08:37 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/125 "2019-02-06T08:37:34Z")

</div>

Arf, ich habe zu schnell gesprochen 😕

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/1/130044d15474c0f45d3732b2c52aefc0f003af23.png)

Das ändert nichts…

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [6. Februar 2019 um 08:42 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/126 "2019-02-06T08:42:15Z")

</div>

Das ist normal!

Im Grunde genommen ist das passiert, dass, als du das Projekt geklont hast, entweder Vscode oder Git dachte, dass du das Projekt in CRLF umwandeln möchtest, und alle Dateien von LF zu CRLF konvertiert hat (das wollen wir nicht)

Also würde ich Folgendes tun:

1/ Wir müssen diese berühmte Datei zu Git hinzufügen  
2/ Du klonst Git erneut, und wir schauen, ob es gut ist oder nicht

- Wenn es gut ist, war Vscode der Übeltäter
- Wenn es nicht gut ist, ist Git der Übeltäter, du hast einen Parameter, der besagt, dass das Projekt beim Pullen in CRLF konvertiert werden soll (mein zweiter Link)

[Vorherige Seite](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=4)

[Nächste Seite](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=6)
