node.js - Node - 基于 url 的 Koa 动态路由
问题描述
目标是拥有这样的路线 -/names/A
每个字母一直到 Z。我希望有一个动态 html 页面,而不是每个字母都有 26 个 html 页面,它将在 url 中显示字母的信息。我正在尝试使用koa
,koa-route
和koa-session2
.
这是我的尝试,它给出了错误Cannot set property 'levelOneLetter' of undefined
,这意味着 ctx.session 在 names.levelOne 中未定义。
var Koa = require("koa");
var route = require("koa-route");
var session = require("koa-session2");
var routes = require("./routes/routes.js");
// dynamic routes
const names = {
levelOne: (ctx, letter) => {
ctx.session.levelOneLetter = letter;
console.log('letter', letter);
app.use(route.get('/names/' + letter, routes.levelOne));
}
};
app.use(route.get('/names/:letter', names.levelOne));
//in routes
module.exports.levelOne = function *() {
this.status = 200;
this.state.levelOneLetter = ctx.session.levelOneLetter;
this.body = yield renderView("names", "level-one", this.state);
};
解决方案
From the example code you have provided I can see that you haven't applied the koa-session2
middleware to the Koa app. This why ctx.session
is undefined.
app.use(session())
推荐阅读
- javascript - $(this) 在 bower 和 node 上通过 requirejs 未定义
- java - 在 Eclipse 中,如何让我新安装的窗口构建器与现有项目一起工作?
- r - 如何在R中自动命名元素列表(基于元素的数量)
- javascript - 不明白为什么我收到'Promise {
}' - python - 节点'training/Adam/gradients/gradients/conv5_block3_3_bn/cond_grad/StatelessIf'
- java - 每5分钟加载一次值并传递给另一个方法java android
- pgadmin - pgadmin4 config_local.py 在 Windows 上的位置
- go - 意外的 Bit.Reverse() 结果
- python - Python 使用带有 html 内容的 csv 发送多封电子邮件?
- swift - 在 Application Support 文件夹中运行 `xattr -rc` Swift 运行时不会产生这样的文件。从终端运行正常