mirror of
https://github.com/Alvin-Zilverstand/Challenge_15_Magazijn_App_Maken.git
synced 2026-03-06 02:56:41 +01:00
86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
const express = require('express');
|
|
const mongoose = require('mongoose');
|
|
const cors = require('cors');
|
|
const path = require('path');
|
|
const os = require('os');
|
|
require('dotenv').config();
|
|
|
|
const app = express();
|
|
|
|
// Load models first
|
|
const User = require('./models/User');
|
|
const Item = require('./models/Item');
|
|
const Reservation = require('./models/Reservation');
|
|
|
|
// Middleware
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
app.use(express.static('public'));
|
|
|
|
// Connect to MongoDB
|
|
mongoose.connect(process.env.MONGODB_URI)
|
|
.then(async () => {
|
|
console.log('Database connected and models initialized successfully');
|
|
})
|
|
.catch(err => {
|
|
console.error('MongoDB connection error:', err);
|
|
// Don't exit, just log the error
|
|
});
|
|
|
|
// Routes
|
|
app.use('/api/auth', require('./routes/auth'));
|
|
app.use('/api/items', require('./routes/items'));
|
|
app.use('/api/reservations', require('./routes/reservations'));
|
|
app.use('/api/upload', require('./routes/upload'));
|
|
|
|
// Error handling middleware
|
|
app.use((err, req, res, next) => {
|
|
console.error('Error:', err);
|
|
res.status(500).json({
|
|
message: 'Internal server error',
|
|
error: process.env.NODE_ENV === 'development' ? err.message : undefined
|
|
});
|
|
});
|
|
|
|
// Serve static files
|
|
app.get('*', (req, res) => {
|
|
res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
|
});
|
|
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
// Get local IP addresses
|
|
function getLocalIPs() {
|
|
const interfaces = os.networkInterfaces();
|
|
const addresses = [];
|
|
|
|
for (const interfaceName in interfaces) {
|
|
const interface = interfaces[interfaceName];
|
|
for (const address of interface) {
|
|
// Skip internal and non-IPv4 addresses
|
|
if (address.family === 'IPv4' && !address.internal) {
|
|
addresses.push(address.address);
|
|
}
|
|
}
|
|
}
|
|
return addresses;
|
|
}
|
|
|
|
// Handle uncaught exceptions
|
|
process.on('uncaughtException', (err) => {
|
|
console.error('Uncaught Exception:', err);
|
|
});
|
|
|
|
// Handle unhandled promise rejections
|
|
process.on('unhandledRejection', (reason, promise) => {
|
|
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
});
|
|
|
|
app.listen(PORT, () => {
|
|
const localIPs = getLocalIPs();
|
|
console.log(`Server is running on:`);
|
|
console.log(`- Local: http://localhost:${PORT}`);
|
|
localIPs.forEach(ip => {
|
|
console.log(`- Network: http://${ip}:${PORT}`);
|
|
});
|
|
}); |