我运行 Swagger 来测试我用 NodeJS 和 Fastify 框架编写的 API。一切都很好,当我在 Postman 中测试我的 API 时,一切都很好。但在 Swagger 中,我收到此错误:
TypeError: NetworkError when attempting to fetch resource.
在我搜索它之后,我发现我应该将 CORN 添加到我的代码中。所以我在 server.js 中写了这段代码:
fastify.addHook('onSend', (request, reply, payload, next) => {
reply.header('Access-Control-Allow-Origin', '*')
reply.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Origin, Cache-Control')
reply.header('Access-Control-Allow-Methods', 'GET')
Object.assign(reply.res, {
payload: JSON.parse(payload),
input: request.body || request.query,
})
next()
})
但是 Swagger 不适用于 addHook!我不知道为什么!当我将此添加到我的代码并转到此 url:localhost:3002/documentation 以查看我的 Swagger API 时,我收到此错误:
SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse ()
但是当我从我的代码中评论 addHook 并且之后我得到第一个错误时,Swagger 没问题!如何在没有 addHook 的情况下将 CORN 添加到我的代码中?