79 lines
2.9 KiB
Plaintext
79 lines
2.9 KiB
Plaintext
require('dotenv').config();
|
|
const express = require('express');
|
|
const cors = require('cors');
|
|
const path = require('path');
|
|
const app = express();
|
|
|
|
// ✅ 요청 바디 용량 제한 확장
|
|
app.use(express.urlencoded({ extended: true, limit: '50mb' }));
|
|
app.use(express.json({ limit: '50mb' }));
|
|
|
|
// ✅ CORS 설정: 허용 origin 명시
|
|
app.use(cors({
|
|
origin: function (origin, callback) {
|
|
const allowedOrigins = [
|
|
'https://ahn.hyungi.net',
|
|
'https://tech.hyungi.net',
|
|
'https://pdf.hyungi.net'
|
|
];
|
|
if (!origin || allowedOrigins.includes(origin)) {
|
|
callback(null, true);
|
|
} else {
|
|
callback(new Error('CORS 차단됨: ' + origin));
|
|
}
|
|
}
|
|
}));
|
|
|
|
// ✅ 라우터 등록
|
|
const authRoutes = require('./routes/authRoutes');
|
|
const projectRoutes = require('./routes/projectRoutes');
|
|
const workerRoutes = require('./routes/workerRoutes');
|
|
const taskRoutes = require('./routes/taskRoutes');
|
|
const processRoutes = require('./routes/processRoutes');
|
|
const workReportRoutes = require('./routes/workReportRoutes');
|
|
const cuttingPlanRoutes = require('./routes/cuttingPlanRoutes');
|
|
const factoryInfoRoutes = require('./routes/factoryInfoRoutes');
|
|
const equipmentListRoutes = require('./routes/equipmentListRoutes');
|
|
const toolsRoute = require('./routes/toolsRoute');
|
|
const uploadRoutes = require('./routes/uploadRoutes');
|
|
const uploadBgRoutes = require('./routes/uploadBgRoutes');
|
|
const dailyIssueReportRoutes = require('./routes/dailyIssueReportRoutes');
|
|
const issueTypeRoutes = require('./routes/issueTypeRoutes');
|
|
const healthRoutes = require('./routes/healthRoutes');
|
|
const pipeSpecRoutes = require('./routes/pipeSpecRoutes');
|
|
|
|
// ahn.hyungi.net 배포용
|
|
app.use(express.static(path.join(__dirname, 'public')));
|
|
|
|
// ✅ 업로드된 파일 정적 라우팅 추가 (웹에서 이미지 접근 가능하게)
|
|
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
|
|
|
|
// ✅ 각 라우트 등록
|
|
app.use('/api/auth', authRoutes);
|
|
app.use('/api/projects', projectRoutes);
|
|
app.use('/api/workers', workerRoutes);
|
|
app.use('/api/tasks', taskRoutes);
|
|
app.use('/api/processes', processRoutes);
|
|
app.use('/api/workreports', workReportRoutes);
|
|
app.use('/api/cuttingplans', cuttingPlanRoutes);
|
|
app.use('/api/factoryinfo', factoryInfoRoutes);
|
|
app.use('/api/equipment', equipmentListRoutes);
|
|
app.use('/api/tools', toolsRoute);
|
|
app.use('/api/uploads', uploadRoutes);
|
|
app.use('/api', uploadBgRoutes); // ✅ upload-bg 경로용
|
|
app.use('/api/issue-reports', dailyIssueReportRoutes);
|
|
app.use('/api/issue-types', issueTypeRoutes);
|
|
app.use('/api', healthRoutes);
|
|
app.use('/api/pipespecs', pipeSpecRoutes);
|
|
|
|
// ✅ 서버 실행
|
|
const PORT = process.env.PORT || 3005;
|
|
app.listen(PORT, () => {
|
|
console.log(`🚀 서버가 ${PORT}번 포트에서 실행 중...`);
|
|
}).on('error', (err) => {
|
|
console.error('❌ 서버 실행 중 오류 발생:', err);
|
|
});
|
|
|
|
app.use((req, res) => {
|
|
res.status(404).json({ error: '존재하지 않는 경로입니다.' });
|
|
}); |