Erstellen und Ausführen eines Express.js-Projekts mit ServBay
Was ist Express.js?
Express.js ist ein schnelles, minimalistisches und flexibles Webanwendungs-Framework für Node.js. Es stellt eine Reihe leistungsstarker Funktionen bereit, um Single-Page-, Multi-Page- und Hybrid-Webanwendungen zu entwickeln. Express.js gehört zu den beliebtesten Frameworks im Node.js-Ökosystem und ist für sein schlankes und flexibles Design bei Entwickler:innen sehr geschätzt.
Hauptmerkmale und Vorteile von Express.js
- Schlank und flexibel: Express.js bietet eine übersichtliche API und ein flexibles Middleware-Konzept, wodurch die Webentwicklung besonders effizient wird.
- Middleware: Es unterstützt vielfältige Middleware zur einfachen Bearbeitung von Anfragen und Antworten, etwa für das Parsen von Request-Bodies, Session-Handling oder das Bereitstellen statischer Dateien.
- Routing: Leistungsfähige Routing-Funktionen ermöglichen das Handling von Anfragen anhand verschiedener HTTP-Methoden (GET, POST, PUT, DELETE usw.) und URL-Pfaden.
- Hohe Integrationsfähigkeit: Kann nahtlos mit diversen Template-Engines (z. B. Pug, EJS, Handlebars), Datenbanken (wie MongoDB, MySQL, PostgreSQL) und anderen Node.js-Modulen zusammenarbeiten.
- Große Community & Ökosystem: Eine große Community und ein umfangreiches Angebot an Third-Party-Middleware und Plugins machen es einfach, Lösungen und Ressourcen zu finden.
Mit Express.js können Entwickler:innen schnell leistungsfähige Webanwendungen und APIs erstellen. ServBay als leistungsstarke lokale Webentwicklungsumgebung bietet hierfür eine bequeme Node.js-Laufzeitumgebung sowie umfassende Website-(Reverse-Proxy) und Datenbankverwaltung.
Ein Express.js-Projekt mit ServBay erstellen und ausführen
In dieser Anleitung erfahren Sie, wie Sie mithilfe der von ServBay bereitgestellten Node.js-Umgebung ein Express.js-Projekt erstellen, konfigurieren und betreiben. Wir nutzen dabei die Website-Funktion von ServBay, um den Webserver einzurichten und den Zugriff über einen Reverse Proxy zu ermöglichen. Dieses Setup eignet sich insbesondere für Anwendungen in Node.js, Python, Go, Java usw., die auf einem eigenen Port laufen.
Voraussetzungen
Vor dem Start stellen Sie bitte Folgendes sicher:
- ServBay wurde erfolgreich auf macOS installiert.
- Das Node.js-Paket wurde über die “Pakete”-Registerkarte im ServBay-Kontrollpanel installiert und aktiviert.
- (Optional) Wenn Sie eine Datenbankanbindung planen, installieren und aktivieren Sie die gewünschten Datenbank-Pakete (MariaDB, PostgreSQL, MongoDB, Redis, MySQL) in ServBay.
- Grundkenntnisse im Umgang mit Terminal oder Kommandozeile sind vorhanden.
Express.js-Projekt erstellen
Projekt initialisieren
Öffnen Sie zunächst das Terminal und wechseln Sie in das von ServBay empfohlene Webverzeichnis unter
/Applications/ServBay/www
. Mit dem Befehlnpx express-generator
wird ein neues Express.js-Projekt erstellt.npx
ist ab npm v5.2+ standardmäßig verfügbar.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2Dadurch entsteht im Pfad
/Applications/ServBay/www
ein neuer Ordnerservbay-express-app
mit einer Basisstruktur für das Express.js-Projekt.Projektabhängigkeiten installieren
Wechseln Sie in das neue Verzeichnis
servbay-express-app
und führen Sienpm install
aus, um die für Express.js und das Projekt benötigten Pakete zu installieren (einschließlich Template-Engine, statischer Dateiserver usw.).bashcd servbay-express-app npm install
1
2Warten Sie bis die Installation abgeschlossen ist.
Die Startseite des Express.js-Projekts anpassen
Um zu prüfen, ob das Projekt läuft, passen wir die Standardausgabe der Startseite an.
Datei
routes/index.js
bearbeitenIn Express.js-Projekten werden Routen über eigene Dateien verarbeitet. Öffnen Sie die Datei
routes/index.js
im Projektordner. Sie bearbeitet standardmäßig GET-Anfragen auf der Wurzel-URL/
. Ändern Sie den Code, so dass anstelle des Renderns eines Pug-Templates direkt eine Textantwort gesendet wird.javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // Geändert: Sende eine Textantwort res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Speichern Sie die Datei.
In den Entwicklungsmodus wechseln
Während der Entwicklung läuft meist ein lokaler Entwicklungsserver, damit Sie Änderungen direkt sehen können. Ein Express.js-Projekt starten Sie einfach mit npm start
.
Entwicklungsserver starten
Gehen Sie in das Verzeichnis
servbay-express-app
und führen Sie folgenden Befehl aus, um den Entwicklungsserver zu starten. DerPORT
-Parameter legt den gewünschten Port fest (hier:8585
).DEBUG
aktiviert die Debug-Ausgabe.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2Im Terminal erscheint die Startmeldung und bestätigt, dass Express.js auf Port
8585
lauscht.ServBay Website-Reverse-Proxy konfigurieren
Da Express.js auf einem eigenen Port (8585) läuft und nicht auf den Standard-Ports (80/443), richten wir mithilfe der Website-Funktion von ServBay einen Reverse Proxy ein. Der Webserver von ServBay (standardmäßig Caddy) nimmt die Anfragen auf 80/443 entgegen und leitet sie an das Express.js-Projekt auf
127.0.0.1:8585
weiter.Öffnen Sie die ServBay-Oberfläche, wechseln Sie zum Tab „Websites“ und fügen Sie eine neue Website hinzu. Beispielhafte Konfiguration:
- Name:
My first Express.js dev site
(zur besseren Erkennung) - Domain:
servbay-express-test.servbay.demo
(die.servbay.demo
-Domain nutzt das ServBay User CA für automatisches HTTPS) - Websitetyp:
Reverse Proxy
auswählen - IP:
127.0.0.1
(alternativlocalhost
) - Port:
8585
(Port des Express.js-Projekts)
Nach dem Speichern übernimmt ServBay die Änderungen. Es wird automatisch ein SSL-Zertifikat für die Domain (mit Endung
.servbay.demo
) erstellt.Detaillierte Informationen zur Konfiguration finden Sie im entsprechenden Abschnitt der ServBay-Dokumentation: Node.js-Entwicklungswebsite anlegen.
- Name:
Entwicklungswebsite aufrufen
Öffnen Sie Ihren Browser und gehen Sie zu
https://servbay-express-test.servbay.demo
. ServBay nimmt die Anfrage entgegen, leitet sie intern per Reverse Proxy zum Express.js-Server auf Port 8585 weiter, und Sie sollten als Antwort die Seite "Hello ServBay!" sehen.Da ServBay benutzerdefinierte Domains und kostenlose SSL-Zertifikate (inklusive automatischem HTTPS für
.servbay.demo
-Domains) unterstützt, können Sie schon in der lokalen Umgebung HTTPS nutzen – ganz wie in Produktion. Das hilft, potenzielle Probleme schon im Vorfeld zu entdecken.
Produktion bereitstellen
Ist die Entwicklung abgeschlossen, können Sie das Express.js-Projekt für den produktiven Einsatz vorbereiten und lokal im produktionsnahen Modus testen.
Produktionsumgebung vorbereiten
Üblicherweise wird im Produktivbetrieb die Umgebungsvariable
NODE_ENV
aufproduction
gesetzt. Das beeinflusst z. B. das Verhalten von Bibliotheken, deaktiviert den Debugmodus und verbessert die Performance. Prüfen Sie, ob Ihr Code richtig aufNODE_ENV=production
reagiert.Produktionsserver starten
Wechseln Sie in den Projektordner
servbay-express-app
und starten Sie eine neue Server-Instanz für den Produktionsmodus auf einem anderen Port (z. B.8586
) mit der passenden Umgebungsvariable.bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2Die Konsole zeigt nun die Startmeldung für Port
8586
.ServBay Reverse Proxy für Produktion einrichten
Analog zum Entwicklungsszenario konfigurieren Sie für das Produktivsystem eine weitere ServBay-Website als Reverse Proxy.
Im ServBay-Panel unter „Websites“ neue Website hinzufügen, Einstellung wie folgt:
- Name:
My first Express.js production site
- Domain:
servbay-express-test-prod.servbay.demo
(oder eine andere gewünschte Domain) - Websitetyp:
Reverse Proxy
- IP:
127.0.0.1
- Port:
8586
(Port des Produktionsservers)
Einstellungen speichern und übernehmen.
- Name:
Produktionswebsite aufrufen
Rufen Sie im Browser die konfigurierte Domain auf:
https://servbay-express-test-prod.servbay.demo
. Mithilfe des ServBay-Proxies erreichen Sie jetzt die Produktionsinstanz auf Port 8586 – so können Sie die App unter produktionsnahen Bedingungen lokal testen.
Datenbankanbindung
ServBay unterstützt lokale Entwicklungsdatenbanken wie MariaDB, PostgreSQL, MongoDB und Redis über entsprechende Pakete. Nach dem Start der jeweiligen Datenbankinstanzen verbindet Ihr Express.js-Projekt sich typischerweise mit den von ServBay voreingestellten Zugangsdaten. Beispielsweise ist für MariaDB/MySQL der Standardnutzer root
mit dem Passwort password
vorkonfiguriert. PostgreSQL nutzt user
/ password
(Standarddatenbank servbay_default
). Die Details entnehmen Sie dem ServBay-Datenbankbereich oder den Vorgaben.
Hier einige Beispiele, wie Sie in Express.js verschiedene Datenbanken anbinden. Vergewissern Sie sich vorher, das jeweilige Node.js-Paket mit npm install <paket-name>
installiert zu haben.
Anbindung an MongoDB
Als Erstes installieren Sie den MongoDB-Treiber
mongoose
– eine beliebte ORM-Lösung:bashnpm install mongoose
1Dann binden Sie in Ihrem Express.js-Projekt (z. B. in
app.js
oder einer zentralen Konfigurationsdatei) den Connector ein:javascriptvar mongoose = require('mongoose'); // Verbindung zu lokalem MongoDB, Datenbankname: servbay-express-app // Die ServBay-Standard-MongoDB ist ohne Auth erreichbar mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err));
1
2
3
4
5
6
7
8
9
10Bitte stellen Sie sicher, dass das MongoDB-Paket in ServBay gestartet wurde.
Anbindung an Redis
Zuerst das Redis-Paket
redis
installieren:bashnpm install redis
1Dann den Client verbinden:
javascriptvar redis = require('redis'); // ServBay-Standard: Redis läuft auf localhost:6379, ohne Passwort var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis-Fehler: ' + err); }); // Beispiel: Setzen und Abrufen eines Schlüssels // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // Gibt "Hello from Express!" aus // }); // Verwenden Sie das client-Objekt für Redis-Operationen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Achten Sie darauf, dass das Redis-Paket in ServBay läuft.
Anbindung an MariaDB / MySQL
ServBay unterstützt MariaDB und MySQL gleichermaßen. Die Anbindung erfolgt typischerweise mit dem
mariadb
- odermysql2
-Paket. Das folgende Beispiel nutztmariadb
(funktioniert auch mit MySQL):Erst installieren:
bashnpm install mariadb # oder npm install mysql2
1Dann mit den Standarddaten verbinden (
root
/password
):javascriptvar mariadb = require('mariadb'); // Die standardmäßige MariaDB/MySQL läuft in ServBay auf localhost:3306 var pool = mariadb.createPool({ host: 'localhost', port: 3306, // Standardport user: 'root', // Standardnutzer von ServBay password: 'password', // Standardpasswort von ServBay database: 'servbay_express_app', // Diese Datenbank können Sie über ServBay anlegen connectionLimit: 5 // Größe des Connection Pools }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // Das conn-Objekt dient zur Ausführung von Abfragen // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // Nach der Verwendung Verbindung zurückgeben }) .catch(err => { console.log("Verbindung fehlgeschlagen: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Vorher ggf. die Datenbank
servbay_express_app
in ServBay (z. B. mit phpMyAdmin oder Adminer) anlegen. Ebenso sicherstellen, dass MariaDB/MySQL läuft.Anbindung an PostgreSQL
PostgreSQL-Bibliothek
pg
installieren:bashnpm install pg
1Danach mit den Standardwerten verbinden (
user
/password
, Datenbankservbay_default
):javascriptvar { Pool } = require('pg'); // Der PostgreSQL-Standard läuft in ServBay auf localhost:5432 var pool = new Pool({ user: 'user', // Standardnutzer von ServBay host: 'localhost', database: 'servbay_default', // Standarddatenbank, alternativ eigene password: 'password', // Standardpasswort von ServBay port: 5432, // Standardport }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL-Verbindungsfehler:', err); return; } console.log('Connected to PostgreSQL'); // Das client-Objekt dient zur Abfrageausführung // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // Verbindung zurückgeben }); // Alternativ per async/await // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // Verbindung zurückgeben // } catch (err) { // console.error('PostgreSQL-Verbindungsfehler:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31Achten Sie darauf, dass das PostgreSQL-Paket in ServBay läuft.
Zusammenfassung
Mit diesen Schritten haben Sie erfolgreich mit ServBay ein Express.js-Projekt erstellt, konfiguriert und ausgeführt. Dabei haben Sie gelernt:
- Ein Projekt mit
express-generator
zu initialisieren - Die Express.js-App auf einem bestimmten Port laufen zu lassen
- Den ServBay-Website-Reverse-Proxy nutzen, um die Node.js-App über Standard-HTTP/S-Ports erreichbar zu machen
- In ServBay verschiedene gängige Datenbanken anzubinden
ServBay erleichtert das Einrichten und Managen einer lokalen Node.js-(Express.js)-Entwicklungsumgebung enorm, sodass Sie sich optimal auf Ihr Projekt konzentrieren können. Darüber hinaus bieten Features wie automatische SSL-Zertifikate, Backups, Log-Management und mehr zusätzliche Unterstützung für Ihren lokalen Entwicklungsalltag.