Fixes to get all servers running on netcup
This commit is contained in:
@@ -1,7 +1,14 @@
|
|||||||
import winston from 'winston';
|
import winston from 'winston';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
export function createLogger(service) {
|
export function createLogger(service) {
|
||||||
|
// Create logs directory relative to the project root (two levels up from utils)
|
||||||
|
const logsDir = path.join(__dirname, '../../logs');
|
||||||
|
|
||||||
return winston.createLogger({
|
return winston.createLogger({
|
||||||
level: process.env.LOG_LEVEL || 'info',
|
level: process.env.LOG_LEVEL || 'info',
|
||||||
format: winston.format.combine(
|
format: winston.format.combine(
|
||||||
@@ -19,11 +26,11 @@ export function createLogger(service) {
|
|||||||
}),
|
}),
|
||||||
// Write all logs to service-specific files
|
// Write all logs to service-specific files
|
||||||
new winston.transports.File({
|
new winston.transports.File({
|
||||||
filename: path.join('logs', `${service}-error.log`),
|
filename: path.join(logsDir, `${service}-error.log`),
|
||||||
level: 'error'
|
level: 'error'
|
||||||
}),
|
}),
|
||||||
new winston.transports.File({
|
new winston.transports.File({
|
||||||
filename: path.join('logs', `${service}-combined.log`)
|
filename: path.join(logsDir, `${service}-combined.log`)
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,11 +1,27 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const multer = require('multer');
|
const multer = require('multer');
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs');
|
||||||
const { importProductsFromCSV } = require('../utils/csvImporter');
|
const { importProductsFromCSV } = require('../utils/csvImporter');
|
||||||
const { PurchaseOrderStatus, ReceivingStatus } = require('../types/status-codes');
|
const { PurchaseOrderStatus, ReceivingStatus } = require('../types/status-codes');
|
||||||
|
|
||||||
// Configure multer for file uploads
|
// Configure multer for file uploads without silent fallbacks
|
||||||
const upload = multer({ dest: 'uploads/' });
|
const configuredUploadsDir = process.env.UPLOADS_DIR;
|
||||||
|
const uploadsDir = configuredUploadsDir
|
||||||
|
? (path.isAbsolute(configuredUploadsDir)
|
||||||
|
? configuredUploadsDir
|
||||||
|
: path.resolve(__dirname, '../../', configuredUploadsDir))
|
||||||
|
: path.resolve(__dirname, '../../uploads');
|
||||||
|
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(uploadsDir, { recursive: true });
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Failed to initialize uploads directory at ${uploadsDir}:`, error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
const upload = multer({ dest: uploadsDir });
|
||||||
|
|
||||||
// Get unique brands
|
// Get unique brands
|
||||||
router.get('/brands', async (req, res) => {
|
router.get('/brands', async (req, res) => {
|
||||||
@@ -728,4 +744,4 @@ router.get('/:id/time-series', async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
|||||||
@@ -44,8 +44,21 @@ try {
|
|||||||
console.error('Error loading .env file:', error);
|
console.error('Error loading .env file:', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure required directories exist
|
// Resolve important directories relative to the project root
|
||||||
['logs', 'uploads'].forEach(dir => {
|
const serverRoot = path.resolve(__dirname, '..');
|
||||||
|
const configuredUploadsDir = process.env.UPLOADS_DIR;
|
||||||
|
const uploadsDir = configuredUploadsDir
|
||||||
|
? (path.isAbsolute(configuredUploadsDir)
|
||||||
|
? configuredUploadsDir
|
||||||
|
: path.resolve(serverRoot, configuredUploadsDir))
|
||||||
|
: path.resolve(serverRoot, 'uploads');
|
||||||
|
|
||||||
|
// Persist the resolved uploads directory so downstream modules share the same path
|
||||||
|
process.env.UPLOADS_DIR = uploadsDir;
|
||||||
|
|
||||||
|
const requiredDirs = [path.resolve(serverRoot, 'logs'), uploadsDir];
|
||||||
|
|
||||||
|
requiredDirs.forEach(dir => {
|
||||||
if (!fs.existsSync(dir)) {
|
if (!fs.existsSync(dir)) {
|
||||||
fs.mkdirSync(dir, { recursive: true });
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
}
|
}
|
||||||
@@ -209,4 +222,4 @@ const setupSSE = (req, res) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
startServer();
|
startServer();
|
||||||
|
|||||||
Reference in New Issue
Block a user