69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
// Anderson Valadares Pinto (20251PL.TSIAD0018) [SLS]
|
|
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
import express from 'express';
|
|
import mongoose from 'mongoose';
|
|
|
|
import instrumentoRoutes from './routes/instrumento.js';
|
|
|
|
// Configuração para resolução de caminhos com ES Modules
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
const app = express();
|
|
const PORT = Number(process.env.PORT) || 3000;
|
|
const MONGODB_URI =
|
|
process.env.MONGODB_URI || 'mongodb://127.0.0.1:27017/loja_instrumentos';
|
|
|
|
// Configuração do mecanismo de visualização EJS
|
|
app.set('view engine', 'ejs');
|
|
app.set('views', path.join(__dirname, 'views'));
|
|
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
// Funções de formatação disponíveis em todos os templates.
|
|
app.locals.formatarPreco = (valor) =>
|
|
new Intl.NumberFormat('pt-BR', {
|
|
style: 'currency',
|
|
currency: 'BRL',
|
|
}).format(Number(valor) || 0);
|
|
|
|
app.use('/', instrumentoRoutes);
|
|
|
|
// Página não encontrada.
|
|
app.use((req, res) => {
|
|
res.status(404).render('erro', {
|
|
titulo: 'Página Não Encontrada',
|
|
codigo: 404,
|
|
mensagem: 'O endereço que você tentou abrir não existe.',
|
|
});
|
|
});
|
|
|
|
// Qualquer erro inesperado cai aqui, em vez de derrubar o servidor.
|
|
app.use((erro, req, res, next) => {
|
|
console.error(erro);
|
|
res.status(500).render('erro', {
|
|
titulo: 'Erro Interno',
|
|
codigo: 500,
|
|
mensagem: 'Algo deu errado ao processar a solicitação. Tente novamente.',
|
|
});
|
|
});
|
|
|
|
async function iniciar() {
|
|
await mongoose.connect(MONGODB_URI);
|
|
console.log(`Conectado ao MongoDB em ${MONGODB_URI}`);
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(
|
|
`Servidor rodando com sucesso na porta ${PORT}: http://localhost:${PORT}/instrumentos`
|
|
);
|
|
});
|
|
}
|
|
|
|
iniciar().catch((erro) => {
|
|
console.error('Não foi possível iniciar a aplicação:', erro.message);
|
|
process.exit(1);
|
|
});
|