视图引擎和oak之间的deno-http服务器冲突



我想用视图引擎和oak呈现一些html页面,但也能将数据发送到postgresql数据库。

首先,在构建代码时,我能够呈现ejs页面。另一方面,我注入了允许将数据发送到数据库的代码,它也起作用了。

但当我想让两者都运行时,它就不起作用了(邮递员上出现404错误(:

这是一个没有查看路线和查看模块的代码,只是用一个路由将数据发送到数据库。post:

server.ts没有查看模块和查看路线(此代码有效(:

import { Application} from "https://deno.land/x/oak/mod.ts";
import { send } from "https://deno.land/x/oak/send.ts";
import {
viewEngine,
engineFactory,
adapterFactory,
} from "https://deno.land/x/view_engine/mod.ts";
import router from './routes.ts';
const ejsEngine =  engineFactory.getEjsEngine();
const oakAdapter =  adapterFactory.getOakAdapter();
const port = Deno.env.get("PORT") || 5000
const app = new Application();
/*app.use(viewEngine(oakAdapter, ejsEngine));
app.use(async(ctx,next) => {
await send(ctx,ctx.request.url.pathname,{
root: `${Deno.cwd()}`
});
next();
});*/

app.use(router.routes());
app.use(router.allowedMethods());


//deno run --allow-net --allow-read --allow-env server.ts


console.log(`Server running on port ${port}`);
await app.listen({ port: +port })

不带查看模块和查看路线的routes.ts:

import { Router } from "https://deno.land/x/oak/mod.ts";
import {addUser} from './controllers/products.ts';

import {ejsVariables} from './EJS/ejsvariables.js';
//import {showDate} from './EJS/showdate.js';


const router = new Router();

router.post('/OBV/compteclient', addUser);
/*router.get('/OBV/acceuil',(ctx:any)=>{
ctx.render('./OBV/acceuil/OBV.ejs');
});*/

/*router.get('/OBV/compteclient',(ctx:any)=>{
ctx.render('./OBV/compteclient/CompteClient.ejs');
});*/
/*router.get('/OBV/boutique',(ctx:any)=>{
ctx.render('./OBV/boutique/Boutique.ejs',
ejsVariables.dataUser); 
})*/

export default router

server.ts代码的注释部分是否存在异步问题?

所以,我发现了问题所在,这是关于server.ts中app.use的顺序,路由器被永远无法到达的等待发送屏蔽了。

app.use(viewEngine(oakAdapter, ejsEngine));
app.use(router.routes());
app.use(router.allowedMethods());
app.use(async(ctx,next) => {
await send(ctx,ctx.request.url.pathname,{
root: `${Deno.cwd()}`
});
next();
});

相关内容

  • 没有找到相关文章

最新更新