- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 koa-compose
按照 guide 中的建议将中间件放在一起.我将 koa-compose
导入为 kompose
。
我有以下代码:
const home = async function home (ctx,next) {
if(ctx.path === '/') {
ctx.body = 'Hello World!'
} else {
await next()
}
}
const random = async function random (ctx,next) {
console.log(ctx)
if(ctx.path === '/random') {
console.log('Inside random function')
ctx.body = Math.floor(Math.random() * 10)
} else {
await next()
}
}
const backwards = async function backwards (ctx,next) {
if(ctx.path === '/backwards') {
ctx.body = 'sdrawkcab'
} else {
await next()
}
}
const pi = async function pi (ctx,next) {
if(ctx.path === '/pi') {
ctx.body = String(Math.PI)
} else {
await next()
}
}
const body2 = kompose([random,backwards,pi,home])
我将它用作链中的最后一个中间件:
app.use(responseTime())
app.use(logger())
app.use(body2)
app.listen(3000)
我收到这个错误:
TypeError: undefined is not a function
at Object.<anonymous> (/home/vamsi/Do/koa-tutorial/node_modules/koa-compose/index.js:28:19)
at undefined.next (native)
at onFulfilled (/home/vamsi/Do/koa-tutorial/node_modules/co/index.js:65:19)
at /home/vamsi/Do/koa-tutorial/node_modules/co/index.js:54:5
at new Promise (/home/vamsi/.nvm/v6.2.0/lib/node_modules/babel-cli/node_modules/core-js/modules/es6.promise.js:191:7)
at Object.co (/home/vamsi/Do/koa-tutorial/node_modules/co/index.js:50:10)
at converted (/home/vamsi/Do/koa-tutorial/node_modules/koa-convert/index.js:17:15)
at dispatch (/home/vamsi/Do/koa-tutorial/node_modules/koa/node_modules/koa-compose/index.js:43:32)
at next (/home/vamsi/Do/koa-tutorial/node_modules/koa/node_modules/koa-compose/index.js:44:18)
at _callee7$ (index.js:72:11)
完整代码是on github .您可以在此处的代码中将 body()
替换为 body2
。
在做了一些额外的记录之后,它说:
TypeError: next is not a function
at Object._callee3$ (index.js:29:11)
at tryCatch (/home/vamsi/.nvm/v6.2.0/lib/node_modules/babel-cli/node_modules/regenerator-runtime/runtime.js:62:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/vamsi/.nvm/v6.2.0/lib/node_modules/babel-cli/node_modules/regenerator-runtime/runtime.js:336:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/vamsi/.nvm/v6.2.0/lib/node_modules/babel-cli/node_modules/regenerator-runtime/runtime.js:95:21)
at step (index.js:3:1)
at index.js:3:1
at new Promise (/home/vamsi/.nvm/v6.2.0/lib/node_modules/babel-cli/node_modules/core-js/modules/es6.promise.js:191:7)
at Object.<anonymous> (index.js:3:1)
at Object.backwards (index.js:25:7)
at Object.<anonymous> (/home/vamsi/Do/koa-tutorial/node_modules/koa-compose/index.js:25:28),
最佳答案
您正在为 Koa 2 使用基于生成器的 koa-compose
,这是行不通的。你需要 koa-compose@3.x
安装它:
npm install -S koa-compose@next
关于javascript - 编写 koa 异步函数中间件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39429668/
我正在使用 koa.js 开发节点服务器 我已经为 body 解析器寻找了一些库。 并且有好几种koa body parser。 但我不知道它们有什么区别,包括 koa-body和 koa-bodyp
我正在尝试使用 Koa.js,并检查了以下用于路由请求的模块:1.koa路线2. koa 挂载 当我在谷歌中查看他们的 github 页面/教程时,这些示例看起来几乎相似,只有细微差别。 对于 koa
假设我想在不使用扩展程序的情况下将一个简单的变量发布到 Koa 应用程序,我该怎么做? 最佳答案 您必须使用官方 koa-bodyparser 模块。 然后所有 POST参数将在 this.reque
抱歉,我不太明白 key 在 koa 中是如何工作的。在 koa 中,有keys字段上 app将像这样使用的对象: const app = new Koa(); app.keys = ['some s
我们为什么要做这个 router.get('/data', async (ctx, next) => { ctx.body = dummyjson.parse(data); await nex
这就是我的想法,伪代码。 const myRedirect = (routePath) => { newUrl = routePath; if (matches condition)
应用程序.js var bodyParser = require('koa-bodyparser'); app.use(bodyParser()); app.use(route.get('/objec
如何使用 koa-router 进行嵌套路由重定向? app.js: var router = require('koa-router')(); var route1 = require('./rou
我尝试使用该模块为 Koa 服务器建立 HTTPS 连接 https://www.npmjs.com/package/koa-sslify但我收到错误“AssertionError:app.use()
我有一个非常简单的服务器可以使用: import * as http from 'http'; import * as Koa from "koa"; import { Request, Respon
从用户代理进行 ajax POST $.ajax({ type: 'POST', url: 'https://mysub.domain.dev/myro
我试图从我们的 React 客户端上传一个大约 1.5 mb 的 JSON 对象到我们的 Koa.js node.js 服务器。 我将 Koa.js 与 koaBody(koa-body 4.1.1)
我正在潜入Koa2并看到koa-compose。我得到了我给它的中间件,并且它返回了一个,但是为什么呢?将多个中间件包装为一个而不是单独添加它们有什么好处? app.use(compose(m1, m
我正在尝试 Koa.js,并且正在寻找一种关于生成器返回错误处理的最佳实践(如果有的话)。采取以下措施: var sql = require('./lib/sql'); app.use(functio
通常,登录用户会获得内容类型的所有条目。 我创建了一个“代码段”内容类型(_id,name,content,users>snippets)>表示“具有并属于许多”关系。 我创建了一些测试用户并提出了一
在我的app.js中,我有以下内容... app.use(async (ctx, next) => { try { await next() } catch (err) { c
我在导出路线时遇到了一个奇怪的问题。由于某种原因,这段代码对我有用: app.js import Koa from 'koa' import routes from './routes/index'
我想将一些环境变量从 Koa 服务器传递到客户端。在 Express 中,我可以执行类似 res.render('index', { data: 'someData' }); 的操作,然后我可以访问
这是代码片段: //Category.service.js ... exports.update = async (ctx, next) => { const {categoryId} = ctx
我是 node 和 koa 的新手,所以请原谅我的愚蠢。 我不确定我是否搞砸了。但我想将 Koa 与 OrientDB 一起使用。我可以使用 Oriento(Node 的模块)连接到 OrientDB
我是一名优秀的程序员,十分优秀!