tome-web/server/server.ts
2021-09-23 23:38:12 -04:00

46 lines
1.1 KiB
TypeScript

import { Application, Status } from 'oak'
//// import any necessary wasm file here
// import init from '~/common/wasm.js'
import apiRouter from './routes/api.ts'
import staticRouter from './routes/static.tsx'
const app = new Application()
app.addEventListener("error", (event) => {
console.error(event.error);
})
app.use(async (ctx, next) => {
try {
await next();
} catch (error) {
ctx.response.body = "Internal server error";
throw error;
}
});
app.use((ctx, next) => {
ctx.response.headers.set('Access-Control-Allow-Origin', '*')
// avoid CSP concerns
// ctx.response.headers.delete("content-security-policy");
console.log(ctx.request.url.pathname)
return next()
})
app.use(apiRouter.routes())
app.use(apiRouter.allowedMethods())
app.use(staticRouter.routes())
app.use(staticRouter.allowedMethods())
// 404
app.use((context) => {
context.response.status = Status.NotFound
context.response.body = `"${context.request.url}" not found`
})
const port = +(Deno.env.get('PORT') ?? 8080)
console.log(`Listening on port ${port}...`)
app.listen(`:${port}`)