53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
import express from "express";
|
|
import mongoose from "mongoose";
|
|
import cors from "cors";
|
|
import dotenv from "dotenv";
|
|
import linksRouter from "./routes/links.js";
|
|
import authRouter from "./routes/auth.js";
|
|
|
|
dotenv.config();
|
|
|
|
const app = express();
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
// Static folder per le icone
|
|
app.use("/uploads", express.static("uploads"));
|
|
|
|
// Auth routes
|
|
app.use("/auth", authRouter);
|
|
|
|
// Link routes (protette)
|
|
app.use("/links", linksRouter);
|
|
|
|
// Connessione Mongo (URL da env con fallback)
|
|
const MONGO_URI = process.env.MONGO_URI || "mongodb://mongo:27017/mydb";
|
|
|
|
mongoose
|
|
.connect(MONGO_URI)
|
|
.then(() => {
|
|
console.log("MongoDB connesso");
|
|
})
|
|
.catch(err => {
|
|
console.error("❌ Errore di connessione a MongoDB:", err.message);
|
|
process.exit(1); // termina il processo
|
|
});
|
|
|
|
|
|
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
const server = app.listen(PORT, () => {
|
|
console.log(`API su http://localhost:${PORT}`);
|
|
});
|
|
|
|
server.on('error', (err) => {
|
|
if (err.code === 'EADDRINUSE') {
|
|
console.error(`❌ Porta ${PORT} già in uso. Arresto del processo.`);
|
|
process.exit(1);
|
|
} else {
|
|
console.error('Errore del server:', err);
|
|
process.exit(1);
|
|
}
|
|
});
|