koa2中间件问题

发布于 2022-09-05 23:50:53 字数 845 浏览 13 评论 0

const Koa = require('koa')
const static = require('koa-static')
const path = require('path')
const app = new Koa()

const test1 = async (ctx, next) => {
  console.log('test1')
  await next()
}

const test2 = (ctx, next) => {
  console.log('test2')
  next()
}

app.use(static(path.join(__dirname, 'dist')))
app.use(test1)
app.use(test2)


app.listen(8999, () => {
  console.log(8999)
})

进入localhost:8999后,test1,test2两个中间件没有被触发

koa-static调换位置之后

app.use(test1)
app.use(test2)
app.use(static(path.join(__dirname, 'dist')))

test1,test2两个中间件触发了,但koa-static没被触发。

难道koa-static没有next()么,并且为何调换位置后koa-static也触发不得

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痕至 2022-09-12 23:50:54

clipboard.png
convert 一下

哭泣的笑容 2022-09-12 23:50:53

把第二个中间件写成异步的就可以了

const test2 = async (ctx, next) => {
  console.log('test2')
  await next()
}

koa中间件执行后必须返回一个promise,如果非要用普通的函数写法,可以这样:

const test2 =  (ctx, next) => {
  return next().then(()=>{
    console.log('test2')
  })
}

如果你非要搞懂,可以看下这篇文章深入浅出koa2

再补充一下,不知道你看完这个能不能理解

const Koa = require('koa');
const static = require('koa-static')
const path = require('path')
const app = new Koa();

const test1 = async (ctx, next) => {
  console.log('test1')
  await next()
}

const test2 =  (ctx, next) => {
  console.log('test2')
  return next().then(()=>{
    console.log('test3')
  })
}

const test3 =  (ctx, next) => {
  console.log('test4')
  return next().then(()=>{
    console.log('test5')
  })
}

app.use(test1)
app.use(test2)
app.use(test3)
app.use(static(path.join(__dirname, 'static')))
app.listen(8080);

// 打印结果
test1
test2
test4
test5
test3
旧话新听 2022-09-12 23:50:53
const Koa     = require('koa')
const static     = require('koa-static')
const path     = require('path')
const app     = new Koa()
const     test1 = async (ctx, next) => {
    console.log('test1')
      await next()
}
const     test2 = async (ctx, next) => {
      console.log('test2')
      await next()
}

app.use(static(path.join(__dirname, 'middleware')))
app.use(test1)
app.use(test2)


app.listen(8999, () => {
  console.log(8999)
})

图片描述

middleware/a.html:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
<body>
    <div> hello world </div>
</body>
</html>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文