import createError from 'http-errors' import logger from 'morgan' import express from 'express' import cookieParser from 'cookie-parser' import cors from 'cors' import i18next from 'i18next' import i18nextMiddleware from 'i18next-http-middleware' import Backend from 'i18next-node-fs-backend' import {logit} from "./utilities/logit.js" import pkg from './package.json' with { type: "json" } const app = express() const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); import indexRouter from './routes/index.js' import { apiRouter } from './routes/api.js' import {fileURLToPath} from "url"; import path from "path"; i18next .use(Backend) .use(i18nextMiddleware.LanguageDetector) .init({ backend: { loadPath: __dirname + '/locales/{{lng}}/{{ns}}.json' }, fallbackLng: 'de', debug: false, preload: ['de', 'en'] }); app.use(i18nextMiddleware.handle(i18next)); app.use(cors()) app.use(logger('dev')) app.use(express.json()) app.use(express.urlencoded({ extended: true })) app.use(cookieParser()) app.use('/', indexRouter) app.use('/api', apiRouter) // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)) }) // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message res.locals.error = req.app.get('env') === 'development' ? err : {} // render the error page res.status(err.status || 500) res.send(`ERROR: ${err.status}, ${err.stack}`) }) logit(`Start of Program Version: ${pkg.version} vom ${pkg.date}`) export default app