我正在使用koa-static尝试Koa。但是在使用多级包含关系时它会一直返回404 (Body: Not Found)
。我不知道原因。
要重现,
Windows 10 x64,Node v9.11.1
Koa v2.5.1,koa-compose v4.1.0,koa-static v4.0.3,koa-send v4.1.3
目录:
的index.html index.js站点/ sites.js站点/ onesite / index.js
的index.html
Hello, koa
index.js
const Koa = require('koa')
const router = require('./sites/sites.js')
const app = new Koa()
app.use(router())
app.listen(80)
站点/ sites.js
const compose = require('koa-compose')
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
站点/ onesite / index.js
const Koa = require('koa')
const serve = require('koa-static')
const app = new Koa()
app.use(serve('.'))
module.exports = app
我不是英语发言者,请原谅一些语法错误。
先谢谢!
答案 0 :(得分:0)
您的问题出在您从sites.js
返回的路由器中:
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
compose
是一个异步函数,但你不等待它的承诺完成。解决此问题的一种方法是返回compose
返回的承诺,以便koa
知道必须等待该承诺得到解决:
module.exports = ()=>{
return (ctx, next)=>{
return compose(require('./onesite').middleware)(ctx, next)
}
}
另一种方法是使用await
:
module.exports = ()=>{
return async (ctx, next)=>{
await compose(require('./onesite').middleware)(ctx, next)
}
}