4

Koa每个请求被执行两次有什么原因吗?

const Koa = require('koa')
const app = new Koa()

const index = async(ctx, next) => {
  console.log('Hello world!')
  await next()
  ctx.body = 'Hello world!'
}

app.use(index);

app.listen(3000)

在我的终端上,我得到:

Hello world!
Hello world!

有任何想法吗?

4

1 回答 1

7

发生这种情况的原因有两个:

第一个 - 正如评论中已经提到的,浏览器也会触发对 favicon.ico 的请求第二:一些浏览器会进行预取,所以在你按下返回键之前,它们会在输入时预取 url。

const Koa = require('koa')
const app = new Koa()

const index = async(ctx, next) => {
  console.log('URL --> ' + ctx.request.url); // This logs out the requested route
  console.log('Hello world!')
  await next()
  ctx.body = 'Hello world!'
}

app.use(index);

app.listen(3000)

我在您的代码中添加了一行,以便您可以查看浏览器要求的路由。这可能有助于确定问题的原因。

于 2017-09-13T11:48:55.297 回答