为什么 'koa-static' 中间件一直返回 404?
Why does 'koa-static' middleware keeps returning 404?
我正在使用 koa-static 尝试 Koa。但是在使用多级包含关系时,它一直返回404 (Body: Not Found)
。不知道是什么原因。
转载,
- Windows 10 x64,节点 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/sites.js sites/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/sites.js
const compose = require('koa-compose')
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
sites/onesite/index.js
const Koa = require('koa')
const serve = require('koa-static')
const app = new Koa()
app.use(serve('.'))
module.exports = app
您的问题出在您 return 来自 sites.js
的路由器上:
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
compose
是一个异步函数,但您不需要等待它的承诺完成。解决这个问题的一种方法是 return return 由 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)
}
}
我正在使用 koa-static 尝试 Koa。但是在使用多级包含关系时,它一直返回404 (Body: Not Found)
。不知道是什么原因。
转载,
- Windows 10 x64,节点 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/sites.js sites/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/sites.js
const compose = require('koa-compose')
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
sites/onesite/index.js
const Koa = require('koa')
const serve = require('koa-static')
const app = new Koa()
app.use(serve('.'))
module.exports = app
您的问题出在您 return 来自 sites.js
的路由器上:
module.exports = ()=>{
return (ctx, next)=>{
compose(require('./onesite').middleware)(ctx, next)
}
}
compose
是一个异步函数,但您不需要等待它的承诺完成。解决这个问题的一种方法是 return return 由 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)
}
}