Een Koa.js-project maken en uitvoeren met ServBay
ServBay is een lokale webontwikkelomgeving speciaal ontworpen voor macOS. Het integreert een breed scala aan veelgebruikte ontwikkelsoftware, waaronder de Node.js-runtime en diverse databases. In dit artikel leer je hoe je de gemakken van ServBay benut om snel je Koa.js-project te creëren, draaien en beheren.
Wat is Koa.js?
Koa.js is een next-gen webframework gebaseerd op Node.js, ontwikkeld door het team achter Express.js. Het staat bekend om zijn eenvoud, krachtige en expressieve featureset, en is een ideale keuze voor het bouwen van webapplicaties en API's. Koa.js maakt optimaal gebruik van moderne JavaScript-features, met name de async/await
-syntaxis, waardoor asynchrone operaties en middleware-schrijven aanzienlijk worden vereenvoudigd. Dit maakt de code overzichtelijker en gemakkelijker te onderhouden.
Belangrijkste kenmerken van Koa.js
- Gebaseerd op async/await: Het ontwerp draait om
async/await
, waardoor asynchrone flow-control intuïtiever wordt. - Lichtgewicht kern: De kern van Koa is zeer klein en bevat alleen de basisfunctionaliteit. Je breidt uit via modulaire middleware.
- Krachtige middleware: Door het cascade-middlewareproces zijn verwerkingsflows helder en flexibel.
- Gefocust op web: Toegespitst op webapplicaties en API-ontwikkeling, zonder onnodige extra functionaliteiten.
Met Koa.js kunnen ontwikkelaars efficiënter high-performance en goed onderhoudbare webservices bouwen.
Koa.js-ontwikkelomgeving inrichten met ServBay
ServBay biedt een kant-en-klare omgeving voor Node.js-ontwikkelaars, inclusief de runtime en populaire databases. Door gebruik te maken van de Website-feature van ServBay heb je eenvoudig toegang tot je lokale Koa.js-project via een eigen domein en SSL-certificaat.
Vereisten
Zorg ervoor dat je het volgende hebt gedaan voordat je begint:
- Installeer ServBay: Download en installeer de nieuwste versie van ServBay via de ServBay-website.
- Installeer het Node.js-pakket: Open de ServBay-app, ga naar het Packages-menu en controleer of jouw gewenste Node.js-versie is geïnstalleerd. Installeer deze indien nodig.
- Basale ServBay-vaardigheden: Weet hoe je diensten start/stop en hoe je websites in ServBay beheert.
Koa.js-project aanmaken
We gebruiken de door ServBay aanbevolen webroot /Applications/ServBay/www
als locatie voor onze projectbestanden.
Projectdirectory initialiseren
Open de Terminal, navigeer naar de ServBay webroot en maak een nieuwe projectmap aan (bijvoorbeeld
servbay-koa-app
). Ga de map in en initialiseer een nieuw Node.js-project:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4Met het commando
npm init -y
wordt snel een standaardpackage.json
aangemaakt.Koa.js installeren
In de projectroot
servbay-koa-app
installeer je Koa.js en eventueel typen (voor TypeScript):bashnpm install koa # Voor TypeScript: typdefinities installeren # npm install @types/koa --save-dev
1
2
3Applicatie-entrypoint aanmaken
Maak een bestand
app.js
in de projectmap aan met deze eenvoudige Koa.js-applicatiecode:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: verzoekinformatie loggen app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // Middleware: afhandelen van root-/verzoeken app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Poort definiëren, met voorrang voor PORT-variabele const port = process.env.PORT || 3000; // HTTP-server starten app.listen(port, () => { console.log(`Koa.js server running on http://localhost:${port}`); console.log(`Project path: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Deze code creëert een basale Koa-app met twee middlewares: één om requesttijd en -pad te registreren, en één die op
/
reageert met "Hello from ServBay Koa.js App!". De app luistert op de poort die is opgegeven in dePORT
-omgevingvariabele of valt terug op 3000.
Naar ontwikkelmodus gaan
Tijdens de ontwikkeling draai je meestal een lokale Node.js-process, en bezoek je Koa.js via de Website-feature van ServBay.
Koa.js-ontwikkelserver opstarten
Open Terminal, ga naar je projectmap en draai het bestand
app.js
via Node.js. Geef een specifieke poort op (bijvoorbeeld 8585) om conflicten te vermijden of ServBay gemakkelijk te laten configureren:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Er verschijnt een melding als
Koa.js server running on http://localhost:8585
, wat betekent dat de server succesvol draait op poort 8585. Laat dit terminalvenster open zodat de server actief blijft.ServBay Website reverse proxy configureren
Om je Koa.js-app te kunnen benaderen via een eigen domein op
localhost:8585
, maak je in ServBay een website aan als reverse proxy:- Open de ServBay-app.
- Ga naar Website.
- Klik linksonder op
+
om een nieuwe site aan te maken. - Vul de siteconfiguratie in:
- Naam:
ServBay Koa.js Dev Site
- Domein:
servbay-koa-dev.servbay.demo
(Gebruik bij voorkeur een domein dat eindigt op.servbay.demo
. ServBay genereert daarvoor direct een SSL-certificaat.) - Type: Kies
Reverse Proxy
- IP-adres:
127.0.0.1
(verwijst naar lokaal draaiende Node.js-process) - Poort:
8585
(de poort waarop jouw Koa.js-app luistert) - Document Root: Dit is niet van belang bij reverse proxy, kan leeg blijven of het projectpad zijn
/Applications/ServBay/www/servbay-koa-app
.
- Naam:
- Opslaan.
- ServBay kan vragen om wijzigingen toe te passen, klik dan op toepassen.
Na configuratie werkt ServBay automatisch je lokale hosts-bestand bij, zodat
servbay-koa-dev.servbay.demo
verwijst naar127.0.0.1
. De interne Caddy- of Nginx-server zal verzoeken naar dat domein doorzetten naar poort 8585. Als je een.servbay.demo
-domein gebruikt, genereert ServBay User CA automatisch een vertrouwd SSL-certificaat, zodat je veilig via HTTPS kunt werken.Raadpleeg voor gedetailleerde stappen de ServBay-documentatie: Node.js-ontwikkelsite toevoegen (let op: selecteer de Engelse versie).
De Koa.js-ontwikkelwebsite bezoeken
Open je browser en navigeer naar
https://servbay-koa-dev.servbay.demo
.Als alles correct is ingesteld, zie je het bericht "Hello from ServBay Koa.js App!". Hiermee weet je dat je via de ServBay-websitefunctie succesvol verbinding hebt met je lokaal draaiende Koa.js-ontwikkelserver. Na wijzigingen in
app.js
of het herstarten van de Node.js-process, worden veranderingen zichtbaar na het refreshen van de pagina.
Productieversie simuleren
Voor een gesimuleerde productieomgeving kun je een andere poort, andere omgevingsvariabelen of een aangepaste startmethode gebruiken. De reverse proxy van ServBay werkt ook prima in deze situatie.
Koa.js-productieserver draaien (simulatie)
Stop de ontwikkelserver (als die nog loopt) en start je app met bijvoorbeeld poort 8586 en instelling
NODE_ENV=production
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Nu draait een nieuwe Koa.js-instance op poort 8586, als gesimuleerde productieomgeving.
Reverse proxy voor productie (simulatie) configureren
Maak in ServBay een nieuwe website specifiek voor productie:
- Open ServBay, ga naar het Website-menu.
- Klik op
+
om een nieuwe site toe te voegen. - Vul de gegevens in:
- Naam:
ServBay Koa.js Prod Site
- Domein:
servbay-koa-prod.servbay.demo
(of een eigen domein en vraag een gratis SSL-certificaat aan via ACME/Let's Encrypt) - Type: Kies
Reverse Proxy
- IP-adres:
127.0.0.1
- Poort:
8586
(poort waar de productie-Koa.js-app luistert) - Document Root: Leeg laten of het projectpad invullen.
- Naam:
- Sla op en pas wijzigingen toe.
Als je een
.servbay.demo
-domein gebruikt, wordt het ServBay User CA-certificaat automatisch gebruikt. Bij een eigen domein kan ServBay gratis SSL/TLS-certificaten beheren via het ACME-protocol (bijv. Let's Encrypt), zodat je een realistische productieomgeving nabootst. Meer info: SSL voor websites inschakelen.De productie-Koa.js-website bezoeken (simulatie)
Open de browser en ga naar
https://servbay-koa-prod.servbay.demo
.Je ziet dezelfde pagina als in de ontwikkelomgeving — maar nu loopt het verzoek via ServBay's reverse proxy naar je Node.js-proces op poort 8586.
Verbinden met databases
ServBay biedt standaard diverse databases, zoals MongoDB, Redis, MariaDB (MySQL-compatibel) en PostgreSQL. Je Koa.js-project maakt hier lokaal gemakkelijk verbinding mee via localhost
.
Hieronder vind je voorbeeldcode (Node.js-drivers) om verbinding te maken met ServBay-databases. Controleer of de gewenste database via Packages in ServBay geïnstalleerd en actief is.
Verbinden met MongoDB
Installeer eerst de MongoDB Node.js-driver (
mongoose
ofmongodb
) in je projectdirectory:bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # of npm install mongodb
1
2Voeg vervolgens connectiecode toe in
app.js
of een ander bestand:javascript// Verbinden met MongoDB via Mongoose const mongoose = require('mongoose'); // ServBay’s standaard MongoDB vereist geen authenticatie, database in te stellen naar wens mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // Let op: Plaats verbindingen doorgaans in de opstartlogica. // Start de server pas als de database connectie geslaagd is.
1
2
3
4
5
6
7
8
9
10
11
12
13De ingebouwde MongoDB van ServBay draait standaard op poort 27017 en vereist geen gebruikersnaam of wachtwoord.
Verbinden met Redis
Installeer de Redis Node.js-client:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Maak verbinding:
javascript// Redis-client verbinden met Redis const redis = require('redis'); // Maak een Redis-client (standaard: localhost:6379) const client = redis.createClient({ url: 'redis://localhost:6379' // ServBay-standaardpoort voor Redis }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Verbinden met de server client.connect(); // Let op: In echte apps wacht je best tot de connectie succesvol is // Bijvoorbeeld via async/await icm client.connect()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Redis draait onder ServBay standaard op poort 6379, zonder wachtwoord.
Verbinden met MariaDB (of MySQL)
MariaDB is een MySQL-fork en API-compatibel. ServBay levert MariaDB uit als standaarddatabase.
Installeer de MariaDB Node.js-driver:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # of npm install mysql2 (aanbevolen)
1
2Verbinden met MariaDB via
mariadb
driver:javascript// MariaDB-client verbinden met MariaDB const mariadb = require('mariadb'); // Standaard MariaDB root-wachtwoord in ServBay is 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Zorg dat de database bestaat! connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // De connectie teruggeven aan de pool }) .catch(err => { console.error("MariaDB connection error:", err); }); // Let op: Connecties ophalen uit de pool is asynchroon
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Met de
mysql2
-driver (aanbevolen):javascript// Verbinden met MariaDB/MySQL via mysql2-client const mysql = require('mysql2/promise'); // Promise-variant gebruiken // Standaard root-wachtwoord in ServBay: 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Zorg dat database bestaat waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Connectie teruggeven aan de pool }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Opmerking: Het standaard root-wachtwoord vind/laat je aan in het ServBay-GUI // Gebruik in echte projecten bij voorkeur omgevingsvariabelen voor wachtwoorden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25MariaDB draait standaard op poort 3306. Maak de benodigde database (
servbay_koa_app
) eventueel aan via ServBay of een databaseclient.Verbinden met PostgreSQL
Installeer de PostgreSQL Node.js-driver:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Maak verbinding met PostgreSQL:
javascript// Verbinden met PostgreSQL via pg-client const { Pool } = require('pg'); // Standaard gebruiker 'user', wachtwoord 'password' in ServBay const pool = new Pool({ user: 'user', // Standaard ServBay-gebruiker host: 'localhost', database: 'servbay_koa_app', // Zorg dat database bestaat password: 'password', // Standaardwachtwoord port: 5432, // ServBay-standaardpoort voor PostgreSQL }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Vrijgeven aan pool }); // Let op: Standaard gebruikersnaam/wachtwoord vind en wijzig je in het ServBay GUI // Gebruik in productie geen hard-coded wachtwoorden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PostgreSQL draait standaard op poort 5432; de default gebruikersnaam en het wachtwoord kun je bekijken in ServBay of zelf aanpassen. Mogelijk moet je de database
servbay_koa_app
eerst aanmaken.
Beheer van databases in ServBay
Je kunt de ServBay-databases niet alleen via code, maar ook met grafische tooling beheren. Ze zijn toegankelijk via 127.0.0.1
of localhost
met de poort, gebruikersnaam en wachtwoord uit het ServBay GUI.
- Wachtwoord bekijken/wijzigen: Ga in ServBay naar de gewenste database in het Packages-overzicht, klik op het instellingen-icoontje en bekijk of wijzig het standaardwachtwoord (
root
bij MariaDB,user
bij PostgreSQL). - Database/gebruiker aanmaken: Gebruik een tool als TablePlus, DBeaver, pgAdmin of MongoDB Compass om verbinding te maken en database, gebruikers en tabellen te beheren.
Let op
- Poortconflicten: Kies een poort voor je Koa.js-app (zoals 8585 of 8586) die niet door andere programma's wordt gebruikt.
- ServBay-status: Controleer of ServBay én de benodigde Node.js- en databasepakketten draaien.
- hosts-bestand: ServBay beheert je
hosts
-bestand automatisch. Controleer bij problemen of er een juiste vermelding in/etc/hosts
staat. - Firewall: Zorg dat de macOS-firewall of andere firewalls ServBay of Node.js niet blokkeren.
- Logs bekijken: Bekijk bij problemen de ServBay-logboeken (te vinden in de log-tab van de app) en de terminaloutput van Node.js ter diagnose.
Veelgestelde Vragen (FAQ)
Vraag: Waarom zou ik een reverse proxy in ServBay gebruiken om mijn Koa.js-project te bezoeken?
Antwoord: Het gebruik van een reverse proxy (via de Sites-feature van ServBay) kent verschillende voordelen:
- Productie nabootsen: Je bezoekt je app via een eigen domein (zoals
.servbay.demo
of een eigen domeinnaam) en niet via een ruw poortnummer — vergelijkbaar met ‘echte’ hosting. - SSL-ondersteuning: ServBay automatiseert SSL-certificaten (via eigen CA of Let's Encrypt), zodat je in de ontwikkelomgeving direct via HTTPS kunt testen.
- Centraal beheer: Je beheert al je lokale ontwikkelwebsites eenvoudig op één plek in ServBay.
- Poorthiding: Browsers/klanten communiceren via standaard poorten (80/443); intern wordt pas omgeleid naar het hoge poortnummer van Node.js.
- Productie nabootsen: Je bezoekt je app via een eigen domein (zoals
Vraag: Kan ik mijn Koa.js-app gewoon via
localhost:PORT
bezoeken zonder reverse proxy?Antwoord: Ja, dat kan. Als je app luistert op een poort (zoals 3000 of een andere), kun je gewoon
http://localhost:PORT
in de browser gebruiken voor ontwikkeling en testen. Je mist dan echter het gemak van maatwerkdomeinen, automatische SSL, gecentraliseerd logbeheer en andere features van ServBay. Voor een realistischere testomgeving (zoals in productie), verdient reverse proxy via ServBay echter de voorkeur.Vraag: Wat zijn de standaard databasewachtwoorden in ServBay? Hoe wijzig ik ze?
Antwoord: De standaard databasewachtwoorden vind je in het Database-overzicht van de ServBay-app. Klik op het instellingen-icoontje naast de betreffende database (bijv. MariaDB of PostgreSQL) om de standaardgebruiker/wachtwoord te zien en desgewenst aan te passen. Wijzig standaardwachtwoorden voor extra veiligheid!
Samenvatting
Na het volgen van deze gids weet je hoe je met ServBay een Koa.js-ontwikkelomgeving opzet op macOS. Je hebt een basisapplicatie gemaakt, de reverse proxy via de Sites-functie van ServBay ingesteld, en toegang geregeld via een eigen domein én HTTPS, zowel voor ontwikkeling als een gesimuleerde productieomgeving. Ook kun je nu verbinding maken met de populairste databases binnen ServBay.
Voor Node.js-ontwikkelaars biedt ServBay een geïntegreerde, eenvoudig te beheren lokale ontwikkelomgeving, zodat je je kunt concentreren op programmeren in plaats van installatiegedoe. Door de krachtige functies van ServBay te benutten, versnel je jouw ontwikkelproces aanzienlijk.