Frontend / UI
Die verschiedenen Front-End-Umgebungen
Voraussetzungen
- VM mit BlueMind in Version 5.0 oder höher bereit zur Nutzung.
VueJS-Umgebung
Voraussetzungen
- NodeJS installiert von der offiziellen Website (Version 8 oder höher).
- NPM wird mit NodeJS installiert.
- Yarn installiert von der offiziellen Website (Version 1.12 oder höher).
Um den Entwicklungsserver zu starten :
- Wechseln Sie in das Plugin, das die Anwendung enthält, in den Ordner, in dem sich die Datei
package.json
befindet (normalerweise ist sie im Stammverzeichnis des Vue.js-Plugins) - Führen Sie dann "
yarn dev
" aus (oder "npm run dev
", wenn Sie sich nicht im Repository bluemind-all befinden): Ein Entwicklungsserver (Live-Reload aktiviert) wird dann ausgeführt. Der Server läuft unterhttp://*:9180/
VSCode-Konfiguration (empfohlener Herausgeber)
- Bearbeiten Sie über Datei > Einstellungen > Einstellungen
{
"settings": {
"prettier.eslintIntegration": true,
"editor.tabSize": 4,
"eslint.autoFixOnSave": true,
"eslint.validate": [
{
"autoFix": true,
"language": "javascript"
},
{
"autoFix": true,
"language": "vue"
}
],
},
"extensions": {
"recommendations": [
"formulahendry.auto-close-tag",
"formulahendry.auto-rename-tag",
"msjsdiag.debugger-for-chrome",
"dbaeumer.vscode-eslint",
"eg2.vscode-npm-script",
"christian-kohler.npm-intellisense",
"esbenp.prettier-vscode",
"dariofuzinato.vue-peek",
"octref.vetur",
]
},
}
Wenn der Webpack-Entwicklungsserver nicht automatisch die Quelldateien neu kompiliert, wenn sie geändert werden, liegt dies wahrscheinlich an einer unzureichenden Anzahl von "inotify Watchern": https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
GWT-Umgebung
Voraussetzungen
- Eclipse 2022-09 installiert.
Installation :
-
Gehen Sie zu Hilfe / Install New Software
-
Hinzufügen https://forge.bluemind.net/nexus/service/rest/repository/browse/eclipse-gwt-plugin/repository/
-
Wähle "GWT Eclipse Plugin".
-
Wählen Sie nur die Version GWT 2.10.0
-
Gehen Sie zu Windows / Einstellungen / GWT und markieren Sie "GWT 2.10.0".
- Gehen Sie zu Hilfe / Install New Software
- Fügen Sie http://download.eclipse.org/mylyn/releases/latest hinzu.
- Nur "Mylin Commons" auswählen
Um den Entwicklungsserver zu starten :
- Klicken Sie mit der rechten Maustaste auf das Projekt, das das JS-Bündel bereitstellt (zum Beispiel net.bluemind.ui.adminconsole.main für die AC), dann "Als" und schließlich "GWT-Entwicklungsmodus mit Jetty"
- Wenn eine Meldung wie diese "could not find any host pages in project" beim Start des Servers erscheint: Klicken Sie mit der rechten Maustaste auf das Projekt / Eigenschaften / GWT / Web Application und wählen Sie die Option "This directory has a WAR directory" (und konfigurieren Sie den Ordner, z.B. web-resources).
- Wenn diese Fehlermeldung erscheint:
Es gibt mehrere mögliche Gründe:- Mit dem devmode kann es notwendig sein, eine IP-Adresse für den GWT-Dev-Server anzugeben. Es kann in Run Configuration / Argumenten festgelegt werden, indem ein Parameter "
-bindAddress 0.0.0.0
" angegeben wird (zum Beispiel) - Sie haben ein Problem mit der Content Security Policy (schauen Sie in die Konsole). Lesen Sie den Abschnitt "Bei Problemen mit CSP" im devmode.
- Sie haben ein Problem mit Mixed Content Security (überprüfen Sie die Konsole). Lesen Sie den Abschnitt "Bei Problemen mit HTTPS" im devmode.
- Mit dem devmode kann es notwendig sein, eine IP-Adresse für den GWT-Dev-Server anzugeben. Es kann in Run Configuration / Argumenten festgelegt werden, indem ein Parameter "
- Wenn diese Fehlermeldung erscheint :
[ERROR] jreLeakPrevention.gcDaemonFail
java.lang.ClassNotFoundException: sun.misc.GC
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at com.google.gwt.dev.shell.jetty.JettyLauncher.jreLeakPrevention(JettyLauncher.java:915)
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:737)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:636)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:898)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:705)
at com.google.gwt.dev.DevMode.main(DevMode.java:432)
Sie können ihn getrost ignorieren. Die umliegenden Kontrollen sollen dies verhindern - die verwendete JRE-Implementierung hat diese Funktion entfernt.
Umgebung Closure
Voraussetzungen
- Erstellen Sie die leeren Dateien
/root/dev-unsecure-cookies und /root/dev-no-csp
auf Ihrer VM und starten Sie den Dienst bm-webserver neu - Kompiliert in open/ui :
mvn -Dmaven.test.skip=true clean install
Um den Entwicklungsserver zu starten :
- Führen Sie im Ordner open/ui das Skript
plovr.sh
aus - Auf
http://localhost:9810
sind die verschiedenen Konfigurationen (~Anwendungen) aufgeführt, die von plovr verwaltet werden
- Praktische Plovr-Konfigurationen (in die URL einfügen, direkt nach index.html, zum Beispiel:
https://virt.bluemind.loc/contact/index.html?mode=RAW
)- ?level=QUIET, um die Warnungen nicht über der Anwendung anzuzeigen,
- ?mode=RAW, der es ermöglicht, im unkompilierten Modus zu sein (alle JS im Klartext).
- Weitere Informationen zur Konfiguration und den verfügbaren Optionen in plovr: http://plovr.com/options.html
Den Reverse Proxy konfigurieren
Konfigurieren Sie Ihre Entwicklungsumgebung so, dass die richtige JS-Datei (die in Entwicklung befindliche) vom BlueMind Webserver, der auf Ihrer VM installiert ist, konsumiert wird.
Über das devmode-Plugin (empfohlene Methode)
Erfordert keinen Reverse Proxy auf dem Entwicklungsrechner.
Voraussetzungen
Paket bm-plugin-webserver-devfilter auf seiner VM installiert.
Umsetzung
- Eine Konfigurationsdatei wird automatisch erstellt (
/etc/bm/dev.json
) beim Installieren des Pakets (nur, wenn keine vorhandene Konfigurationsdatei erkannt wird). - Fügen Sie "
IP_DE_VOTRE_HOST_SUR_RESEAU_VM dev.bluemind.test
" in die/etc/hosts
Ihres Hosts ein. - Starten Sie auf dem Host den Entwicklungsserver.
Anmerkungen
- Ändern Sie im Konfigurationsdokument das Feld '
active
' der Filter, um sie zu aktivieren. - Starten Sie bei jeder Änderung der conf-Datei den bm-webserver neu oder fügen Sie "?reload-devmode" zur URL hinzu (z. B.: /cal/index.html?reload-devmode).
- Zwei besondere Filter, die immer aktiv bleiben können, um in Closure zu entwickeln: der Filter zum Deaktivieren von Appcache und der andere auf /input/.
- Sie können die Standardeinstellungen für den Entwicklungsmodus über den folgenden Link konfigurieren konsultieren oder herunterladen.
Im Falle eines Problems mit HTTPS / Mixed Content Security
Es gibt zwei Möglichkeiten:
- Starten Sie den Browser im "unsecure-Modus" :
- Für Firefox, ändern Sie auf der Seite "about:config" den Parameter
security.mixed_content.block_active_content
auf false - Für Chrome, anscheinend erlauben sie nicht mehr die Freigabe von gemischtem Inhalt (siehe https://support.google.com/chrome/thread/25175839?hl=en und https://docs.adobe.com/content/help/en/target/using/experiences/vec/troubleshoot-composer/mixed-content.html)
- Für Firefox, ändern Sie auf der Seite "about:config" den Parameter
- Wechseln Sie in den vollen HTTP-Modus:
Standardmäßig leitet BlueMind HTTP zu HTTPS um. Sie müssen daher die folgende Konfiguration zu Ihrem Nginx (auf Ihrer VM) hinzufügen.
In diesem Beispiel istbluemind.virt
die URL für den Zugriff auf Ihre VM und bluemind-dev.virt die URL für den Zugriff über HTTP.server {
listen 80;
server_name bluemind-dev.virt;
location / {
proxy_pass https://bluemind.virt;
}
}
Bei einem Problem mit CSP
BlueMind CSP blockiert die Anfrage?
Sie müssen touch **/root/dev-no-csp**
ausführen und bm-webserver neu starten
Authentifizierung mit HTTP:// nicht möglich
Löschen Sie den Anwendungscache, insbesondere die Cookies, erstellen Sie die Datei /root/dev-unsecure-cookies und starten Sie bm-webserver neu.
Bei Problemen mit HSTS
- In der VM muss die Zeile, die den Header
add_header Strict-Transport-Security max-age=15768000;
in der nginx-Konfiguration hinzufügt, entfernt werden:/etc/nginx/sites-enabled/bm-client-access
- Dann starten Sie nginx neu:
nginx -s reload
- In google-chrome/chromium ist es notwendig, den HSTS-Cache zu leeren (chrome://net-internals / Domain Security Policy / Delete domain security policies).
Debug
Wenn der devmode nicht funktioniert, ist dies wahrscheinlich auf die beiden oben genannten Probleme zurückzuführen.
Wenn nicht, versuchen Sie die folgenden Schritte, um Ihr Problem zu qualifizieren:
- Ist die VM in Ordnung?
- Entwicklungsserver gut gestartet?
- Ping des Hosts von der VM?
- Curl die JS von der VM aus gesucht (Firewall-Problem?)
- Regeln in /etc/bm/dev.json korrekt?
Über einen Reverse-Proxy
Voraussetzungen
Der Reverse Proxy Nginx, Apache oder Caddy muss auf seiner Entwicklungsmaschine installiert sein.
Hinweise:
bluemind.host
: URL für den Zugriff auf den installierten BM-Server auf seiner VMbluemind.virt
: URL, um den richtigen aktiven JS zu erhalten (denjenigen, den wir auf unserer Dev-Maschine ändern, kompiliert und per live-reload von webpack-dev-server bereitgestellt).- Beispiel für
/etc/hosts
(für ein Linux):
Nginx
Hinweis : Die geänderte Konfiguration ist die von Nginx auf der Entwicklungsmaschine ****, nicht auf der VM.
Beispiel:
upstream core2 {
server bluemind.virt:443;
}
server {
listen 80;
server_name bluemind.host;
# SIGNATURE
location /signature/js/compile/net.bluemind.ui.signature.application.js {
proxy_pass http://127.0.0.1:8080/signature/js/compile/net.bluemind.ui.signature.application.js;
}
}
Apache
RewriteEngine On
# SIGNATURE
RewriteRule "^/signature/js/compile/net.bluemind.ui.signature.application.js$" "http://127.0.0.1:8080/signature/js/compile/net.bluemind.ui.signature.application.js" [R]
Caddy
Mit Caddy und dieser Konfiguration sind die Dateien /root/dev-unsecure-cookies
und /root/dev-no-csp
NICHT erforderlich.
{
auto_https disable_redirects
}
localhost:2080 {
header {
-Strict-Transport-Security
-Content-Security-Policy
}
reverse_proxy * {
to https://[address_du_serveur]:443
transport http {
keepalive off
tls_insecure_skip_verify
}
}
handle_path /adminconsole/net.bluemind.ui.adminconsole.main/* {
rewrite * /net.bluemind.ui.adminconsole.main{path}
reverse_proxy http://localhost:9876
}
}