skirda-backend/deno/server.ts
2022-08-24 15:08:22 +03:00

44 lines
1.3 KiB
TypeScript

// NOTE: In a "real" app you'll want to add versions to the modules
import { Application } from 'https://deno.land/x/oak/mod.ts';
import { join } from 'https://deno.land/std/path/mod.ts';
import { exists } from 'https://deno.land/std/fs/mod.ts';
import { oakCors } from 'https://deno.land/x/cors/mod.ts';
import router from './routes.ts';
const port = 8080,
distFolder = join(`${Deno.cwd()}`, '../dist'),
app = new Application();
// Logger
// app.use(async (ctx, next) => {
// const start = Date.now();
// await next();
// const ms = Date.now() - start;
// console.log(`${ctx.request.method} ${ctx.request.url} - ${ms}ms`);
// });
app.use(router.routes());
app.use(router.allowedMethods());
app.use(oakCors({ origin: 'http://localhost:4200' }));
app.use(async (ctx) => {
const pathExists = await exists(distFolder + ctx.request.url.pathname);
const options = {
root: distFolder,
path: pathExists ? ctx.request.url.pathname : 'index.html', // Handle fallback
index: 'index.html'
}
await ctx.send(options);
});
app.use(async (ctx: any, next: any) => {
try {
await next();
} catch (err) {
console.error(err)
}
});
app.addEventListener("listen", ({ hostname, port }) => {
console.log(`Listening on port: ${port}`);
});
await app.listen({ port });