1.使用interceptor进行拦截url后,用 const res = await require(@${funcName}
) 和 const instance = await res.default(ctx) 进行调用函数,发现console无法正常工作。
翻了翻文档,发现只有在函数内部才能调用console.log。这个设定,十分影响体验,我只能很不优雅地把interceptor的console共享到全局变量里。不知道有没有其他优雅的解决方法。
2。我想获得ctx.request.body的buffer。理论上来说(根据文档),ctx.request跟express差不多。那么我很自然地使用ctx.request.on(‘data’ 和 ctx.request.on(‘end’ 获取buffer。然而,某些时候,这种方法会失效.当请求 Content-Type: 为application/json ,貌似有个中间的东西自动接管了ctx.request.on(‘data’ 和 ctx.request.on(‘end’ (从而使得ctx.body可以被使用),但这使得我的代码不能触发,也不能获取到原始的buffer。我莫得法子。望解答,如何在这种情况下,获取到原始的buffer.
我目前的解决方案(非常不优雅):
var buffer;
if (!/application\/json/i.test(ctx.headers['content-type'])) {
const chunks = [];
await new Promise((resolve) => {
ctx.request.on('data', (chunk) => {
chunks.push(chunk);
});
ctx.request.on('end', () => {
buffer = Buffer.concat(chunks);
resolve(1)
});
})
} else {
buffer = Buffer.from(JSON.stringify(ctx.body))
}
3.无法绑定域名(主要在laf.dev尝试)。根据我多年建站的经验,我可以保证我的CNAME没有错,可是它却十分无情地返回 domain not resolved 。一天的尝试,让我血压飙升。