Export server
Build e deployment
Build
Per compilare l'export server puoi eseguire npm build (e, se necessario, npm install),
tuttavia la compilazione manuale dell'export server non è più necessaria, poiché una build
viene automaticamente distribuita e testata ad ogni commit sulla branch main. I file di output
verranno poi salvati qui
Deployment
Prima di tutto, assicurati di avere node installato nel sistema.
Qualsiasi versione recente di node andrà bene. L'unica versione "ufficialmente testata"
è la 22.14.0 LTS.
Successivamente, puoi scaricare una build dell'export server da qui,
installarla con script/installs.bat/sh e infine avviarla con scripts/start.bat/sh.
Problemi comuni e troubleshooting
-
Se stai facendo il deployment su Windows e stai cercando di installare l’exporter come servizio, potresti ricevere un errore se node è installato solo per l’utente (e non per il sistema).
Per risolvere il problema, puoi eseguire il servizio come utente corrente (è facilmente fattibile usando nssm). -
Nota che se chiudi un terminale con l'export server in esecuzione (senza prima premere ctrl+c), il server node potrebbe non chiudersi correttamente
e potrebbe rimanere un processo node in background. In tal caso, puoi terminare il processo dal task manager e riavviare.
Spiegazione del codice
Questa è una breve spiegazione su come funziona l'export server, dato che il design interno è piuttosto controintuitivo...
Motivazione
Il problema principale alla base della complessità del codice è che l'export server di Highcharts non permette di passare codice JavaScript semplice come input, ma solo JSON semplice.
Questo è un problema poiché utilizziamo codice per il formatter dei numeri o per il formatter dei colori.
L'unico modo che l'export server offre per passare del codice è quello di inviare il codice JavaScript come stringa, che poi verrà parsato ed eseguito internamente.
Tuttavia, questo è un problema a sua volta, perché i nostri snippet di codice sono sparsi su più file, e trasporli tutti manualmente sarebbe complicato e difficile da mantenere.
Soluzione
La soluzione è la seguente:
- Abbiamo racchiuso tutto il codice che analizza i dati grezzi e li inserisce nei formatter personalizzati di Highcharts in un’unica funzione, che si trova in
get_generic_chart.js - Usiamo webpack per compilare tutto il codice contenuto in
get_generic_chart.jsin un unico file, chiamatoget_generic_chart_compiled.js(che è ignorato da git) - All’inizio di
exporter.js, importiamo l’intero contenuto diget_generic_chart_compiledcome una singola stringa, che poi possiamo passare alla callback del codice di Highcharts