【问题标题】:trouble rendering view in deno/oak在 deno/oak 中渲染视图时出现问题
【发布时间】:2020-09-30 15:08:37
【问题描述】:

我正在使用 deno、oak 和 view_engine。 这是我的文件结构:

server.ts
routes
  user.ts
view
  index.ejs
  /user
    index.ejs

在我的 server.js 上,此代码按预期工作:

router
  .get("/", (context: any) => {
    context.render("view/index.ejs");
  });

但是,在我的 routes/user.ts 中,以下代码不起作用:

router
  .get("user/", (ctx: any) => {
    ctx.render("../view/user/index.ejs")
  });

内部渲染,我试过了:

${Deno.cwd}"/../view/student/index.ejs"
"/../view/user/index.ejs"

无奈之下:

"/view/user/index.ejs"

我确定这里缺少一个超级简单、最明显的东西。

【问题讨论】:

  • 错误日志显示什么?

标签: deno oak


【解决方案1】:

这是解决方法,

import { Application, send, Router } from "https://deno.land/x/oak/mod.ts";
import { viewEngine, engineFactory, adapterFactory, ViewConfig } from 'https://deno.land/x/view_engine/mod.ts';

const ejsEngine = engineFactory.getEjsEngine();
const oakAdapter = adapterFactory.getOakAdapter();

const app = new Application();

app.use(viewEngine(oakAdapter, ejsEngine, {
    viewRoot: "./view",
    viewExt: ".ejs",
}));

const router = new Router();

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

router
    .get('/', async (ctx, next) => {
        ctx.render("index", { data: { name: "Nikhil" } });
    });

await app.listen({ port: 8000 });

在视图文件夹中我有index.ejs

运行文件为,

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

index.ejs

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>EJS HOLA</h1>
    Hobbies of <%=data.name%>

</body>

</html>

更多资源补充,可以关注view_engine

【讨论】:

  • 仍然给我 [错误]:属性 'render' 在类型 'RouterContext,记录>'。但是,在将 Oak 与 v6.0.0 挂钩后,一切正常。
  • 可能你在某些时候误导了论证,你能分享你的代码sn-p
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多