首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘koa-静态’中间件不断返回404?

为什么‘koa-静态’中间件不断返回404?
EN

Stack Overflow用户
提问于 2018-05-27 08:57:36
回答 1查看 659关注 0票数 0

我试着用柯拉止痛剂。但是当使用多级包含关系时,它会继续返回404 (Body: Not Found)。我不知道原因。

来复制

  • Windows 10 x64,Node v9.11.1
  • Koa v2.5.1,koa-合成v4.1.0,koa-静态v4.0.3,koa-发送v4.1.3

目录:

sites

index.html

代码语言:javascript
复制
Hello, koa

index.js

代码语言:javascript
复制
const Koa = require('koa')
const router = require('./sites/sites.js')
const app = new Koa()
app.use(router())
app.listen(80)

sites/sites.js

代码语言:javascript
复制
const compose = require('koa-compose')

module.exports = ()=>{
    return (ctx, next)=>{
        compose(require('./onesite').middleware)(ctx, next)
    }
}

sites/onesite/index.js

代码语言:javascript
复制
const Koa = require('koa')
const serve = require('koa-static')

const app = new Koa()
app.use(serve('.'))
module.exports = app
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-27 09:12:28

您的问题在于您从sites.js返回的路由器

代码语言:javascript
复制
module.exports = ()=>{
  return (ctx, next)=>{
    compose(require('./onesite').middleware)(ctx, next)
  }
}

compose是一个异步函数,但您不需要等待它的承诺完成。解决这一问题的一种方法是返回compose返回的承诺,以便koa知道必须等待该承诺得到解决:

代码语言:javascript
复制
module.exports = ()=>{
  return (ctx, next)=>{
    return compose(require('./onesite').middleware)(ctx, next)
  }
}

另一种方法是使用await

代码语言:javascript
复制
module.exports = ()=>{
  return async (ctx, next)=>{
    await compose(require('./onesite').middleware)(ctx, next)
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50550558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档